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
でエラー構文が出てしまいます。
もしお分かりの方がいればアドバイスいただければ幸いです。
お礼
な、なるほど。 すごく良く分かりました。 上記の内容で簡単に実現する事ができました。 ありがとうございました。