Det du ser är table
är ett av de MySQL reserverade ord
men du försöker använda det som ett kolumnnamn. Din kolumn heter faktiskt table_name
dock baserat på din fråga.
En fråga med platshållare ser ut så här:
INSERT INTO votes (ip, table_name, imgid)
VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE
ip=VALUES(ip),
table_name= VALUES(table_name),
imgid=VALUES(imgid)
Kom ihåg med mysqli
du kan köra den här frågan genom att göra så här:
$sth = $mysqli->prepare("...");
$sth->bind_param("sss", $_SERVER['REMOTE_ADDR'], $table, $imgid);
$sth->execute();
Dokumentationen beskriver denna process mer detaljerat, men "sss"
sak hänvisar till tre strängar, och de tre värdena skickas in som parametrar.
Du bör förmodligen använda PDO
eftersom det är mycket mindre krångligt att använda än mysqli
. Ännu bättre skulle vara att använda ett databasramverk som doktrin
att göra mycket av SQL-smutsarbetet åt dig. Ännu bättre skulle vara att använda ett ramverk som CodeIgnighter
, CakePHP
eller FuelPHP
för att ge dig en grund att bygga på. Att konstruera applikationer för hand från grunden är extremt tidskrävande och betydligt mer felbenägen.
En annan sak att notera är att du bör försöka använda konsekvent namngivning i din kod. Du hänvisar till $table
som ett värde för table_name
, så det borde förmodligen vara $table_name
till att börja med.