アシアル株式会社主催 開発者向け、一歩先をいくためのテクニカルセミナー

<< 登録完了とメール送信 質問一覧 SQL文の内容 >>
  • キーワードが設定されていません

  • 0P
MySQLにデータが追加できません。

データベースを使ってゲストブックを作りつつ、
PHPの勉強をしていますが、データベースにデータが追加されずデータ追加エラーが出ます。
どうすればよいのか教えていただけるでしょうか?

環境は
データベースはMySQLを使用しています。
PHPMyadminでテーブルを作りました。
PHPは5.3.1
XAMPP1.7.3
です。

コードは以下の通りです。

  1. <html>
  2. <head>
  3. <title>ゲストブック</title>
  4. </head>
  5. <body>
  6. <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>">
  7.   <table border="1">
  8.     <tr>
  9.       <td>お名前</td>
  10.       <td><input type="text" name="g_name" size="30"></td>
  11.     </tr>
  12.     <tr>
  13.       <td>メールアドレス</td>
  14.       <td><input type="text" name="g_mail" size="30"></td>
  15.     </tr>
  16.     <tr>
  17.       <td>メッセージ</td>
  18.       <td>
  19.       <textarea rows="5" cols="30" name="g_mes"></textarea>
  20.       </td>
  21.     </tr>
  22.     <tr>
  23.       <td colspan="2">
  24.       <input type="submit" value="書き込む">
  25.       </td>
  26.     </tr>
  27.   </table>
  28. </form>
  29.  
  30. <?php
  31. // 接続設定(サーバ/データベース/ユーザ/パスワード)
  32. $sv = "localhost";
  33. $dbname = "guestbook";
  34. $user = "******";
  35. $pass = "******";
  36.  
  37. // データベースに接続する
  38. $conn = mysql_connect($sv$user$pass) or die("接続エラー");
  39. mysql_select_db($dbname) or die("接続エラー");
  40. ?>
  41.  
  42. <?php
  43. // POSTメソッドで送信された場合は書き込み処理を実行する
  44. if ($_SERVER["REQUEST_METHOD"]  == "POST") {
  45.     // フォームからデータを受け取る
  46.     $g_name = cnv_dbstr($_POST["g_name"]);
  47.     $g_mail = cnv_dbstr($_POST["g_mail"]);
  48.     $g_mes = cnv_dbstr($_POST["g_mes"]);
  49.  
  50.     // 名前とメッセージが入力されていればデータの追加を実行する
  51.     if (!empty($g_name) and !empty($g_mes)) {
  52.         // データを追加する
  53.         $sql = "INSERT INTO guestdata(g_name, g_mail, g_mes, g_date) ";
  54.         $sql .= "VALUES(";
  55.         $sql .= "'" . $g_name . "',";
  56.         $sql .= "'" . $g_mail . "',";
  57.         $sql .= "'" . $g_mes . "',";
  58.         $sql .= "'" . date("Y/m/d H:i:s") . "'";
  59.         $sql .= ")";
  60. echo $sql;
  61.         $res = mysql_query($sql$conn) or die("データ追加エラー");
  62.         if ($res) {
  63.             echo "<p>書き込みありがとうございました</p>";
  64.         }
  65.     }
  66.     // 名前やメッセージが空白の場合はエラーメッセージを出力する
  67.     else {
  68.         echo "<p><b>お名前とメッセージを入力してください</b></p>";
  69.     }
  70. }
  71.  
  72. // SQLコマンド用の文字列に変換する関数
  73. function cnv_dbstr($string) {
  74.     // タグを無効にする
  75.     $string = htmlspecialchars($string);
  76.  
  77.     // magic_quotes_gpcがONの場合はエスケープを解除する
  78.     if (get_magic_quotes_gpc()) {
  79.         $string = stripslashes($string);
  80.     }
  81.  
  82.     // SQLコマンド用の文字列にエスケープする
  83.     $string = mysql_real_escape_string($string);
  84.     return $string;
  85. }
  86. ?>

エラー個所を探すために
echo $sql;
を追加し、
 $res = mysql_query($sql, $conn) or die("データ追加エラー");

 $res = mysql_query($sql, $conn) or die("mysql_error()");

にしてみましたが、
INSERT INTO guestdata(g_name, g_mail, g_mes, g_date) VALUES('aaa','aaa','aaa','2010/06/18 10:13:01')mysql_error()

と表示されてしまいます。

どこが悪いのでしょうか?よろしくお願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。

QMySQLにデータが追加できません。 satoshi_iso  [06月18日 10時39分] 
┗満開Re:MySQLにデータが追加できません。 shimix  [06月18日 11時55分] 
  ┗Re:Re:MySQLにデータが追加できません。 satoshi_iso  [06月18日 17時20分] 

コメント一覧

並び替え( ツリー順 / 投稿順[降順] / 投稿順[昇順]

Re:MySQLにデータが追加できません。

>$res = mysql_query($sql, $conn) or die("データ追加エラー");
>↓
>$res = mysql_query($sql, $conn) or die("mysql_error()");

エラーの内容を知りたければ

  1. $res = mysql_query($sql, $conn) or die(mysql_error());

としてください。mysql_error()関数であればエラーの内容を返してくれると思います。"mysql_error()"という文字列(リテラル)ではダメです・・。

Re:Re:MySQLにデータが追加できません。

shimixさん。ありがとうございました。

エラーメッセージが表示されて、
エラー内容が特定され、問題解決いたしました。

単純なスペルミスでした。
登録完了とメール送信 質問一覧 SQL文の内容