Apa yang Anda lihat adalah table
adalah salah satu dari kata-kata yang dicadangkan MySQL
tetapi Anda mencoba menggunakannya sebagai nama kolom. Kolom Anda sebenarnya bernama table_name
berdasarkan pertanyaan Anda.
Kueri dengan placeholder terlihat seperti:
INSERT INTO votes (ip, table_name, imgid)
VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE
ip=VALUES(ip),
table_name= VALUES(table_name),
imgid=VALUES(imgid)
Ingat dengan mysqli
Anda dapat menjalankan kueri ini dengan melakukan ini:
$sth = $mysqli->prepare("...");
$sth->bind_param("sss", $_SERVER['REMOTE_ADDR'], $table, $imgid);
$sth->execute();
Dokumentasi menjelaskan proses ini secara lebih rinci, tetapi "sss"
hal mengacu pada tiga string, dan tiga nilai dilewatkan sebagai parameter.
Anda mungkin harus menggunakan PDO
karena jauh lebih mudah digunakan daripada mysqli
. Lebih baik lagi menggunakan kerangka database seperti Doktrin
untuk melakukan banyak pekerjaan kotor SQL untuk Anda. Lebih baik lagi menggunakan kerangka kerja seperti CodeIgnighter
, CakePHP
atau FuelPHP
untuk memberi Anda landasan untuk membangun. Membangun aplikasi dengan tangan dari awal sangat memakan waktu dan secara signifikan lebih rentan terhadap kesalahan.
Hal lain yang perlu diperhatikan adalah Anda harus mencoba dan menggunakan penamaan yang konsisten dalam kode Anda. Anda merujuk ke $table
sebagai nilai untuk table_name
, jadi seharusnya $table_name
untuk memulai.