Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP:Like/Dislike-Zähler

Was Sie sehen, ist table ist eines der für MySQL reservierten Wörter aber Sie versuchen, es als Spaltennamen zu verwenden. Ihre Spalte heißt eigentlich table_name basierend auf deiner Frage.

Eine Abfrage mit Platzhaltern sieht so aus:

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

Erinnern Sie sich mit mysqli Sie können diese Abfrage folgendermaßen ausführen:

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

Die Dokumentation beschreibt diesen Vorgang ausführlicher, aber der "sss" thing bezieht sich auf drei Strings, und die drei Werte werden als Parameter übergeben.

Sie sollten wahrscheinlich PDO da es viel weniger umständlich zu verwenden ist als mysqli . Noch besser wäre es, ein Datenbank-Framework wie Doctrine zu verwenden um einen Großteil der SQL-Drecksarbeit für Sie zu erledigen. Noch besser wäre es, ein Framework wie CodeIgnighter zu verwenden , CakePHP oder FuelPHP um Ihnen eine Grundlage zu geben, auf der Sie aufbauen können. Anwendungen von Grund auf per Hand zu konstruieren ist extrem zeitaufwändig und deutlich fehleranfälliger.

Eine weitere zu beachtende Sache ist, dass Sie versuchen sollten, konsistente Namen in Ihrem Code zu verwenden. Sie beziehen sich auf $table als Wert für table_name , also sollte es vermutlich $table_name sein zu beginnen.