プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。
現在私はhtmlのフォームに文字を入力してデータベース内にデータを追加するプログラムを
作成しています。
ですがMySQLとの連携のところで行き詰ってしまい、どうにかみなさんのお力をお借りしたいです。


まずhtmlファイルです。ここに文字を入力してup.phpに値を渡しています。
<html> <head> <title>用語情報入力</title> </head>
<body> 用語を入力してください。<br> <br>
<form method="POST" action="up.php">

yougoid:<input type="text" name="yougoid" size="25"><br><br>
用語名:<input type="text" name="yougo" size="25"><br><br>
説明:<input type="text" name="sestumei" size="10"><br><br>
読み:<input type="text" name="yomi" size="10"><br><br>
講義回:<input type="text" name="kougi" size="10"><br><br>
回:<input type="text" name="kai" size="10"><br><br>

<input type="submit" value="登録する">

</form>
</body>
</html>



そしてこちらがup.phpファイルです。postで送られてきた値をMySQLに反映するプログラムです。

<html>
<body>
用語情報<br><br>
yougoid:<?php echo $_POST['yougoid'] ?><br><br>
用語名:<?php echo $_POST['yougo'] ?><br><br>
説明:<?php echo $_POST['sestumei'] ?><br><br>
読み:<?php echo $_POST['yomi'] ?><br><br>
講義回数:<?php echo $_POST['kougi'] ?><br><br>
回:<?php echo $_POST['kai'] ?><br><br>

<?php
$db = mysqli_connect("localhost", "root", "c0106426" , "network");
mysqli_query($db, "SET NAMES UTF-8");

$sql = "insert into employee (yougoid,yougo,sestumei,yomi,kougi,kai,)
values (\"".$_POST['yougoid']."\",\"".$_POST['yougo']. "\",\"".$_POST['sestumei'].
"\",\"".$_POST['yomi']."\",\"".$_POST['kougi']."\",\"".$_POST['kai']."\")";

$result = mysqli_query($db, $sql);
if($result == TRUE)
{ print "データベースに格納しました。"; }
else{ print "データベースに格納できませんでした。"; }


mysqli_close($db); ?>
</body>
</html>

データベースはnetworkという名前でテーブル名はyougoid,yougo.setsumei,yomi,kougi,kai
というテーブルがあります。
現在の状況は最後のデータベースに格納・・・も表示されないので
resultに値が返ってきていないと推測していますが
エラーも出ない状況なのでどうしていいかわかりません。
実行結果を画像で添付いたします。よろしくお願いします。

A 回答 (5件)

$sql = の行が悪いので、


> $result = mysqli_query($db, $sql);
の行でエラーが発生するでしょう。

最初のうちは実行すべき sql を実際にDBに流して動作確認したものをコピペして進める
方がいいでしょう。

もし mysqli extension が無い場合や、接続情報の間違いがあった場合は
> $db = mysqli_connect("localhost", "root", "c0106426" , "network");
> mysqli_query($db, "SET NAMES UTF-8");
でエラーになります。

mysql で grant 文による接続許可をしていなければ、やはり mysqli_connect の行でエラーになります。

これらは、環境的なものともいえますから、確認方法を身につけることで対応できるでしょう。
phpinfo を表示する。mysql で mysql.user テーブルを確認するなどです。

コードの良し悪しは、他の人が書いたコードを沢山読んでやるべき事、やってはいけない事を身につけた方がいいでしょう。何気に、非常に危険なコードを書いていますよ。
    • good
    • 0

>ini_setはファイルの一番最初に書いてください。


>ただ、サーバーによっては変更できないのであしからず。
動作検証もしてないプログラムをいきなりレンタルサーバで動かす非常識な行動をする
馬鹿もいないでしょうから自分のテストに使っているローカルサーバ内のphp.iniを直接
変更させた方がいいでしょう。
テスト環境としてデバッグ環境は必須ですからね。
    • good
    • 0

追記。



ini_setはファイルの一番最初に書いてください。
ただ、サーバーによっては変更できないのであしからず。
    • good
    • 0

>エラーも出ない状況なのでどうしていいかわかりません。



PHPのエラーもでないのでしょうか?
それならば、

ini_set ( "display_errors", "1" );

で出してみましょう。

mysqlのエラー分は、クエリ発行の直後に

echo mysql_error();

で出力できます。

それと最終的に格納されている$sqlも一緒に出力しましょう。
それをエラー文と照らし合わせながら何がおかしいか探すのが基本的なやり方です。
    • good
    • 0

>kougi,kai,)


なんでkaiの後に「,」がある?

それとデータ検証せずに$_POSTの値をそのまま利用するのはセキュリティー上あり得ない。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!