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.