表示されているのはtable
です MySQL予約語
の1つです しかし、あなたはそれを列名として使用しようとしています。あなたの列は実際にはtable_name
と呼ばれています しかし、あなたの質問に基づいています。
プレースホルダーを使用したクエリは次のようになります:
INSERT INTO votes (ip, table_name, imgid)
VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE
ip=VALUES(ip),
table_name= VALUES(table_name),
imgid=VALUES(imgid)
mysqli
で覚えておいてください これを行うことで、このクエリを実行できます:
$sth = $mysqli->prepare("...");
$sth->bind_param("sss", $_SERVER['REMOTE_ADDR'], $table, $imgid);
$sth->execute();
ドキュメントではこのプロセスについて詳しく説明していますが、"sss"
モノは3つの文字列を参照し、3つの値はパラメーターとして渡されます。
おそらくmysqli
よりも使用するのがはるかに面倒ではないため 。さらに良いのは、Doctrine
のようなデータベースフレームワークを使用することです。 あなたのためにSQLの汚い仕事の多くをするために。さらに良いのは、CodeIgnighter
のようなフレームワークを使用することです。 、 CakePHP
または
注意すべきもう1つの点は、コードで一貫した命名を試して使用する必要があるということです。 $table
を参照します table_name
の値として 、したがって、おそらく$table_name
である必要があります はじめに。