こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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
でエラー構文が出てしまいます。

もしお分かりの方がいればアドバイスいただければ幸いです。

投稿日時 - 2007-04-14 17:58:16

QNo.2920843

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

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

投稿日時 - 2007-04-15 01:55:36

お礼

大変参考になりました。
・SQLに変数がきちんとした形で入っているか
・INSERT文として成り立っているか
など確認がひとつひとつ大切なんですね。

おかげさまでできました。

しかし、実は、できなかった原因は、MYSQLへのIDログインが完全ではなかったのが理由のようです。
お騒がせしましてありがとうございました。

投稿日時 - 2007-04-15 09:46:50

> 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文の普通の構文はこれですが?

投稿日時 - 2007-04-14 21:17:48

お礼

ありがとうございます。
助かりました。今まで知らなかった構文が勉強になりました。

実際に置き換えてやってみました。
しかし残念ながらだめでした。

この時点でのエラーは、DB上でINSERTの権限がないからでしょうか?
本当にすみません。

投稿日時 - 2007-04-14 21:47:33

あなたにオススメの質問