Mysql
 sql >> Base de données >  >> RDS >> Mysql

PHP :compteur de j'aime/je n'aime pas

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.