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

PHP:kan lide/ikke lide tæller

Det, du ser, er table er et af de MySQL reserverede ord men du prøver at bruge det som et kolonnenavn. Din kolonne hedder faktisk table_name baseret på dit spørgsmål dog.

En forespørgsel med pladsholdere ser sådan ud:

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

Husk med mysqli du kan udføre denne forespørgsel ved at gøre dette:

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

Dokumentationen beskriver denne proces mere detaljeret, men "sss" ting refererer til tre strenge, og de tre værdier sendes ind som parametre.

Du burde sandsynligvis bruge BOB da det er meget mindre besværligt at bruge end mysqli . Endnu bedre ville være at bruge en databaseramme som doktrin at gøre en masse af SQL beskidte arbejde for dig. Endnu bedre ville være at bruge en ramme som CodeIgnighter , CakePHP eller FuelPHP at give dig et fundament at bygge videre på. At konstruere applikationer i hånden fra bunden er ekstremt tidskrævende og væsentligt mere udsat for fejl.

En anden ting at bemærke er, at du bør prøve at bruge konsekvent navngivning i din kode. Du henviser til $table som en værdi for table_name , så det burde formentlig være $table_name til at starte med.



  1. Spring-app mister forbindelsen til MySql efter 8 timer. Hvordan konfigureres korrekt?

  2. mysql, ifnull vs coalesce, hvilket er hurtigere?

  3. Kun én aktiv for hver forholdsbegrænsning

  4. Sådan implementeres et meget tilgængeligt Canvas LMS med en PostgreSQL-databaseklynge