• 締切済み

SQL文の実行に失敗しました???

すみませんが、お助けください。私は、PHPの初心者で現在猛特訓でマスター中です。よろしくお願いします。現在、本を購入し、そこに記述されている通りやってみているのですが、今まで上手くできていたのですが、ここの記述ではどうしてもエラーが出てしまいます。そこでお願いで投稿しました。 <利用環境> ・レンタルサーバー/ラピッドサーバー RV-310 ・MYSQL/MySQL 4.1.18 ・「動物名」と「動物の年齢」を入力する練習フォームとPHP ■php内容 insert.php ※フォームは文字数の関係で省略しました <?php // データベースへの接続情報を設定します。 $dbUser = "***"; $dbPass = "***"; $dbHost = "localhost"; $dbName = "***"; // フォームから送信されたデータを取得します。 $animal_c = $_POST['animal_c']; $age_c = $_POST['age_c']; // mysqli_escape_stringを使用してエスケープを行うため、 // magic_quotes_gpcがOnの場合、エスケープされた文字を元に戻します。 if( get_magic_quotes_gpc() ){ $animal_c = stripslashes( $animal_c ); $age_c = stripslashes( $age_c ); } // MySQLとの接続を行ないます。 $db = mysql_connect( $dbHost, $dbUser, $dbPass ) or die( "MySQL DBとの接続に失敗しました" ); // クライアントの文字コードセットをEUC-JPに変更します。 mysql_query( "SET NAMES ujis", $db ); // データベースを選択します。 mysql_select_db( $dbName, $db ) or die( "データベース" . $dbName . "との接続に失敗しました。" ); // エスケープ処理を行います。 // 数値が入る事が予測される値もエスケープ処理は必ず行います。 $animal_c = convSqlString( $animal_c ); $age_c = convSqlString( $age_c ); // SQL文を記述します。 // フォームより送信されたデータを追加します。 $query = "INSERT INTO zoo SET animal_c='$animal_c', age_c='$age_c'"; // SQL文を実行します。 mysql_query( $query, $db ) or die( "SQL文の実行に失敗しましたbbbbb" ); // SQL文に使用するための文字列をエスケープする関数です。 function convSqlString( $string ){ global $db; // SJISでは2バイト目にメタ文字\のコード(0x5c)を含む場合に、 // このコードもエスケープしてしまうので、 // EUC-JPに変換してエスケープします。 // Linuxでの実行などファイルをEUC-JPにエンコードした場合には // コメントアウトしてください。 // $string = mb_convert_encoding( $string, "EUC-JP", "SJIS" ); // mysqli_escape_stringを使うことにより、 // 'や\などが適切にエスケープされます。 // MySQLのバージョン4.1.2未満を使用している場合は、 // 下の1行を$string = mysql_escape_string( $string ); // に変更してください。 $string = mysql_escape_string( $string ); // 再度SJISに変換して返します。 // Linuxでの実行などファイルをEUC-JPにエンコードした場合には // コメントアウトしてください。 // $string = mb_convert_encoding( $string, "SJIS", "EUC-JP" ); return $string; } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=EUC-JP"> <title>PHPサンプルスクリプト</title> </head> <body bgcolor=#FFFFFF> データを追加しました。 </body> </html> <? // データベースから切断します。 mysql_close( $db ); ?> ■エラー内容(ブラウザ表示) SQL文の実行に失敗しましたbbbb でエラー構文が出てしまいます。 もしお分かりの方がいればアドバイスいただければ幸いです。

みんなの回答

  • gogo-tea
  • ベストアンサー率75% (25/33)
回答No.2

$queryの部分を $query = "INSERT INTO zoo VALUES('" . $animal_c . "','" . $age_c . "');"; echo $query; exit; とかにして、 ・SQLに変数がきちんとした形で入っているか ・INSERT文として成り立っているか を確認してみたらいかがでしょうか。

hhc02331
質問者

お礼

大変参考になりました。 ・SQLに変数がきちんとした形で入っているか ・INSERT文として成り立っているか など確認がひとつひとつ大切なんですね。 おかげさまでできました。 しかし、実は、できなかった原因は、MYSQLへのIDログインが完全ではなかったのが理由のようです。 お騒がせしましてありがとうございました。

回答No.1

> INSERT INTO zoo SET animal_c='$animal_c', age_c='$age_c INSERT INTO zoo (animal_c, age_c) values($animal_c, $age_c) では? INSERT文の普通の構文はこれですが?

hhc02331
質問者

お礼

ありがとうございます。 助かりました。今まで知らなかった構文が勉強になりました。 実際に置き換えてやってみました。 しかし残念ながらだめでした。 この時点でのエラーは、DB上でINSERTの権限がないからでしょうか? 本当にすみません。

関連するQ&A