1

私は長い間このエラーを解決しようとしています。おそらく私は盲目ですが、何が問題なのかわかりません。

$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES (".$_POST['130225'].",".$_SERVER['REMOTE_ADDR'].");";
4

3 に答える 3

6

IP一重引用符で囲まれていなかった (文字列の場合)、

$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES (".$_POST['130225'].",'".$_SERVER['REMOTE_ADDR']."');";
//                                                                        ^                           ^

補足として、変数のSQL Injection値が外部から取得された場合、クエリは脆弱です。予防方法については、以下の記事をご覧ください。を使用すると、値を一重引用符で囲む必要がなくなります。PreparedStatements

于 2013-02-26T15:26:42.050 に答える
1

値がある場所に「'」がいくつか欠けているようです。

$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES ('".$_POST['130225']."','".$_SERVER['REMOTE_ADDR']."');";

クエリをデータベースに貼り付けると、クエリのトラブルシューティングが容易になります。役立つ (場合によっては..) エラー メッセージが表示されます。

あなたのクエリから得られるエラーは

#1054 - Unknown column 'text here' in 'field list'

このエラーを Google で検索すると、解決方法のヒントが表示されます。

于 2013-02-26T15:27:55.107 に答える
0

同様の問題を回避するには、準備済みステートメントを使用することをお勧めします。このように、引用符について心配する必要はありません。

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');

クエリは次のようになります。

$stmt = $mysqli->prepare("INSERT INTO 130225 (vote,ip) VALUES (?,?));

次に、パラメーターをバインドします。

$stmt->bind_param('ss', $_POST['130225'],$_SERVER['REMOTE_ADDR']);

等...

于 2013-02-26T16:11:16.320 に答える