sql >> Base de Datos >  >> RDS >> Mysql

PHP:contador de me gusta/no me gusta

Lo que estás viendo es table es una de las palabras reservadas de MySQL pero está tratando de usarlo como nombre de columna. Su columna en realidad se llama table_name Sin embargo, según tu pregunta.

Una consulta con marcadores de posición se ve así:

INSERT INTO votes (ip, table_name, imgid) 
  VALUES (?, ?, ?)
  ON DUPLICATE KEY UPDATE
    ip=VALUES(ip),
    table_name= VALUES(table_name),
    imgid=VALUES(imgid)

Recuerda con mysqli puede ejecutar esta consulta haciendo esto:

$sth = $mysqli->prepare("...");
$sth->bind_param("sss", $_SERVER['REMOTE_ADDR'], $table, $imgid);
$sth->execute();

La documentación describe este proceso con más detalle, pero el "sss" cosa se refiere a tres cadenas, y los tres valores se pasan como parámetros.

Probablemente debería estar usando DOP ya que es mucho menos complicado de usar que mysqli . Aún mejor sería usar un marco de base de datos como Doctrine para hacer mucho del trabajo sucio de SQL por usted. Aún mejor sería usar un marco como CodeIgnighter , CakePHP o FuelPHP para darle una base sobre la cual construir. Construir aplicaciones a mano desde cero requiere mucho tiempo y es significativamente más propenso a errores.

Otra cosa a tener en cuenta es que debe intentar usar nombres consistentes en su código. Te refieres a $table como valor para table_name , por lo que presumiblemente debería ser $table_name para empezar.