sql >> Database >  >> RDS >> Mysql

PHP:vind ik leuk/niet leuk teller

Wat je ziet is table is een van de MySQL gereserveerde woorden maar u probeert het als kolomnaam te gebruiken. Je kolom heet eigenlijk table_name op basis van je vraag.

Een zoekopdracht met tijdelijke aanduidingen ziet er als volgt uit:

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

Onthouden met mysqli u kunt deze query als volgt uitvoeren:

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

De documentatie beschrijft dit proces in meer detail, maar de "sss" ding verwijst naar drie strings, en de drie waarden worden doorgegeven als parameters.

Je zou waarschijnlijk BOB omdat het een stuk minder kieskeurig is om te gebruiken dan mysqli . Nog beter zou zijn om een ​​databaseframework te gebruiken zoals Doctrine om veel van het vuile SQL-werk voor u te doen. Nog beter zou zijn om een ​​framework te gebruiken zoals CodeIgnighter , CakePHP of FuelPHP om je een basis te geven om op voort te bouwen. Applicaties van de grond af met de hand bouwen is extreem tijdrovend en aanzienlijk foutgevoeliger.

Een ander ding om op te merken is dat je moet proberen consistente naamgeving in je code te gebruiken. Je verwijst naar $table als een waarde voor table_name , dus het zou vermoedelijk $table_name moeten zijn om mee te beginnen.



  1. Voeg twee tabellen samen met id en afstammelingen van een boomachtige tabel

  2. SQLite BESTAAT

  3. Maak een SQL Server Agent-schema met T-SQL

  4. SQL Meest recente record weergeven in GROUP BY?