To, co widzisz, to table
jest jednym z słów zastrzeżonych MySQL
ale próbujesz użyć go jako nazwy kolumny. Twoja kolumna nosi nazwę table_name
w oparciu o twoje pytanie.
Zapytanie z symbolami zastępczymi wygląda tak:
INSERT INTO votes (ip, table_name, imgid)
VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE
ip=VALUES(ip),
table_name= VALUES(table_name),
imgid=VALUES(imgid)
Zapamiętaj z mysqli
możesz wykonać to zapytanie, wykonując następujące czynności:
$sth = $mysqli->prepare("...");
$sth->bind_param("sss", $_SERVER['REMOTE_ADDR'], $table, $imgid);
$sth->execute();
Dokumentacja opisuje ten proces bardziej szczegółowo, ale "sss"
rzecz odnosi się do trzech ciągów, a trzy wartości są przekazywane jako parametry.
Prawdopodobnie powinieneś używać PDO
ponieważ jest o wiele mniej skomplikowany w użyciu niż mysqli
. Jeszcze lepiej byłoby użyć struktury bazy danych, takiej jak Doktryna
zrobić za ciebie dużo brudnej roboty SQL. Jeszcze lepiej byłoby użyć frameworka takiego jak CodeIgnighter
, CakePHP
lub FuelPHP
by dać ci fundament, na którym możesz budować. Tworzenie aplikacji ręcznie od podstaw jest niezwykle czasochłonne i znacznie bardziej podatne na błędy.
Inną rzeczą, na którą warto zwrócić uwagę, jest to, że powinieneś spróbować używać spójnego nazewnictwa w swoim kodzie. Odwołujesz się do $table
jako wartość dla table_name
, więc prawdopodobnie powinien to być $table_name
na początek.