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.