Ce que vous voyez est table
est l'un des mots réservés MySQL
mais vous essayez de l'utiliser comme nom de colonne. Votre colonne s'appelle en fait table_name
basé sur votre question, cependant.
Une requête avec des espaces réservés ressemble à :
INSERT INTO votes (ip, table_name, imgid)
VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE
ip=VALUES(ip),
table_name= VALUES(table_name),
imgid=VALUES(imgid)
Mémoriser avec mysqli
vous pouvez exécuter cette requête en procédant comme suit :
$sth = $mysqli->prepare("...");
$sth->bind_param("sss", $_SERVER['REMOTE_ADDR'], $table, $imgid);
$sth->execute();
La documentation décrit ce processus plus en détail, mais le "sss"
chose fait référence à trois chaînes, et les trois valeurs sont transmises en tant que paramètres.
Vous devriez probablement utiliser AOP
car il est beaucoup moins difficile à utiliser que mysqli
. Encore mieux serait d'utiliser un cadre de base de données comme Doctrine
faire une grande partie du sale boulot SQL pour vous. Encore mieux serait d'utiliser un framework comme CodeIgnighter
, CakePHP
ou FuelPHP
pour vous donner une base sur laquelle bâtir. Construire des applications à la main à partir de zéro prend énormément de temps et est beaucoup plus sujet aux erreurs.
Une autre chose à noter est que vous devriez essayer d'utiliser une dénomination cohérente dans votre code. Vous vous référez à $table
comme valeur pour table_name
, il devrait donc vraisemblablement être $table_name
pour commencer.