Det, du ser, er table
er et af de MySQL reserverede ord
men du prøver at bruge det som et kolonnenavn. Din kolonne hedder faktisk table_name
baseret på dit spørgsmål dog.
En forespørgsel med pladsholdere ser sådan ud:
INSERT INTO votes (ip, table_name, imgid)
VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE
ip=VALUES(ip),
table_name= VALUES(table_name),
imgid=VALUES(imgid)
Husk med mysqli
du kan udføre denne forespørgsel ved at gøre dette:
$sth = $mysqli->prepare("...");
$sth->bind_param("sss", $_SERVER['REMOTE_ADDR'], $table, $imgid);
$sth->execute();
Dokumentationen beskriver denne proces mere detaljeret, men "sss"
ting refererer til tre strenge, og de tre værdier sendes ind som parametre.
Du burde sandsynligvis bruge BOB
da det er meget mindre besværligt at bruge end mysqli
. Endnu bedre ville være at bruge en databaseramme som doktrin
at gøre en masse af SQL beskidte arbejde for dig. Endnu bedre ville være at bruge en ramme som CodeIgnighter
, CakePHP
eller FuelPHP
at give dig et fundament at bygge videre på. At konstruere applikationer i hånden fra bunden er ekstremt tidskrævende og væsentligt mere udsat for fejl.
En anden ting at bemærke er, at du bør prøve at bruge konsekvent navngivning i din kode. Du henviser til $table
som en værdi for table_name
, så det burde formentlig være $table_name
til at starte med.