Quello che vedi è table
è una delle parole riservate MySQL
ma stai cercando di usarlo come nome di colonna. La tua colonna si chiama effettivamente table_name
in base alla tua domanda, però.
Una query con segnaposto è simile a:
INSERT INTO votes (ip, table_name, imgid)
VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE
ip=VALUES(ip),
table_name= VALUES(table_name),
imgid=VALUES(imgid)
Ricorda con mysqli
puoi eseguire questa query in questo modo:
$sth = $mysqli->prepare("...");
$sth->bind_param("sss", $_SERVER['REMOTE_ADDR'], $table, $imgid);
$sth->execute();
La documentazione descrive questo processo in modo più dettagliato, ma il "sss"
cosa fa riferimento a tre stringhe e i tre valori vengono passati come parametri.
Probabilmente dovresti usare DOP
dato che è molto meno complicato da usare rispetto a mysqli
. Ancora meglio sarebbe utilizzare un framework di database come Doctrine
per fare molto del lavoro sporco di SQL per te. Ancora meglio sarebbe utilizzare un framework come CodeIgnighter
, CakePHP
o FuelPHP
per darti una base su cui costruire. La creazione manuale di applicazioni da zero richiede molto tempo e molto più soggetta a errori.
Un'altra cosa da notare è che dovresti provare a usare una denominazione coerente nel tuo codice. Fai riferimento a $table
come valore per table_name
, quindi presumibilmente dovrebbe essere $table_name
per cominciare.