Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PHP:contador de likes/dislikes


O que você está vendo é table é uma das palavras reservadas do MySQL mas você está tentando usá-lo como um nome de coluna. Sua coluna se chama table_name mas com base na sua pergunta.

Uma consulta com marcadores de posição se parece com:
INSERT INTO votes (ip, table_name, imgid) 
  VALUES (?, ?, ?)
  ON DUPLICATE KEY UPDATE
    ip=VALUES(ip),
    table_name= VALUES(table_name),
    imgid=VALUES(imgid)

Lembre-se com mysqli você pode executar esta consulta fazendo isso:
$sth = $mysqli->prepare("...");
$sth->bind_param("sss", $_SERVER['REMOTE_ADDR'], $table, $imgid);
$sth->execute();

A documentação descreve este processo com mais detalhes, mas o "sss" coisa se refere a três strings, e os três valores são passados ​​como parâmetros.

Você provavelmente deveria estar usando DOP pois é muito menos complicado de usar do que mysqli . Ainda melhor seria usar uma estrutura de banco de dados como Doctrine para fazer muito do trabalho sujo do SQL para você. Melhor ainda seria usar um framework como CodeIgnighter , CakePHP ou FuelPHP para lhe dar uma base para construir. Construir aplicativos à mão desde o início é extremamente demorado e significativamente mais propenso a erros.

Outra coisa a notar é que você deve tentar usar uma nomenclatura consistente em seu código. Você se refere a $table como um valor para table_name , então deve ser $table_name começar com.