Mysql
 sql >> Database >  >> RDS >> Mysql

PHP:contatore mi piace/non mi piace

Quello che vedi è table è una delle parole riservate MySQL ma stai cercando di usarlo come nome di colonna. La tua colonna si chiama effettivamente table_name in base alla tua domanda, però.

Una query con segnaposto è simile a:

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

Ricorda con mysqli puoi eseguire questa query in questo modo:

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

La documentazione descrive questo processo in modo più dettagliato, ma il "sss" cosa fa riferimento a tre stringhe e i tre valori vengono passati come parametri.

Probabilmente dovresti usare DOP dato che è molto meno complicato da usare rispetto a mysqli . Ancora meglio sarebbe utilizzare un framework di database come Doctrine per fare molto del lavoro sporco di SQL per te. Ancora meglio sarebbe utilizzare un framework come CodeIgnighter , CakePHP o FuelPHP per darti una base su cui costruire. La creazione manuale di applicazioni da zero richiede molto tempo e molto più soggetta a errori.

Un'altra cosa da notare è che dovresti provare a usare una denominazione coerente nel tuo codice. Fai riferimento a $table come valore per table_name , quindi presumibilmente dovrebbe essere $table_name per cominciare.