0

PHP スクリプトで、いくつかの異なる方法で挿入ステートメントを試みました。

$query = "INSERT INTO table (charfield,charfield,intfield,decimalfield) VALUES ('$stringvar','$stringvar',$intvar,$decimalvar)";
$query = "INSERT INTO table (charfield,charfield,intfield,decimalfield) VALUES ('".$stringvar."','".$stringvar."',".$intvar.",".$decimalvar.")";
$query = 'INSERT INTO table (charfield,charfield,intfield,decimalfield) VALUES ("'.$stringvar.'","'.$stringvar.'",'.$intvar.','.$decimalvar.')';
$query = 'INSERT INTO table (charfield,charfield,intfield,decimalfield) VALUES ("'.$stringvar.'","'.$stringvar.'","'.$intvar.'","'.$decimalvar.'")';

これらの組み合わせを使用して、いくつかの異なる方法でも実行しました。

mysql_real_escape_string($query);
mysql_query($query);
$result = @mysql_query($query);

連結されているステートメントをエコーアウトしましたが、問題ないようです。それをコピーして phpmyadmin sql エディターに貼り付けても、正常に実行されます。データベースは MySQL であり、ユーザーは適切な権限を持っています。

私は何を間違っていますか?


編集:

を使用したエラー メッセージor die:

Access denied for user 'schaffins'@'localhost' (using password: NO)

選択、挿入、および更新する権限を持つユーザーを追加しました。何かを実行する前に、php でそのユーザーを使用して接続しています。

また、同じスクリプトで作成した別のテーブルに挿入することもできました。

4

3 に答える 3

2

この問題はあなたの挿入ではありません.エラーはデータベースに接続しているため、挿入ステートメントを実行するまでには至りません.

mysql_connect() に渡す資格情報を再確認してください... エラーメッセージ「ユーザー 'schaffins'@'localhost' のアクセスが拒否されました (パスワードを使用: NO)」から、パスワードに問題があるようです。

于 2012-05-14T03:19:00.570 に答える
1

mysql_real_escape_stringクエリ全体では使用できません。これにより、クエリ構文の一部である引用符がエスケープされます。クエリに挿入する値で使用する必要があります。

于 2012-05-14T03:09:19.743 に答える
0

特定のアクションの後にのみデータベース接続が発生する場合があります &| 検証が行われます。SQL を実行する前に、開いている接続があることを確認してください。接続が if/else コード ブロック内にネストされている場合、条件が満たされない可能性があり、db 接続は確立されません。

データベース接続を見つけて、php 内のより「グローバル化された」場所に移動 (またはコピー) してみてください - 別名、php 内のどこかで、条件に基づいて接続が確立されないようにする可能性のある if ステートメントの前にデータベース接続が確立されるようにします。許可していません

于 2012-05-14T18:44:16.833 に答える