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

Wie kann ich debuggen, warum die einfachste MySQL-Abfrage falsch zurückgibt?

Ein obligatorisches Update :Da mysql ext nicht mehr existiert, hier sind Antworten für zwei verbleibende MySQL-APIs, die ich auf meiner Website geschrieben habe, basierend auf der Erfahrung aus der Beantwortung von 1000 Fragen zu Stack Overflow:

Kurz gesagt, für mysqi muss die folgende Zeile vor mysqli_connect() hinzugefügt werden Aufruf:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

während für PDO der richtige Fehlermodus eingestellt werden muss, zum Beispiel

$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

Ab der alten mysql-Erweiterung

Um einen Fehler von mysql_query() zu erhalten Sie müssen mysql_error() verwenden Funktion.
Führen Sie also alle Ihre Abfragen immer auf diese Weise aus, zumindest bis Sie einen fortgeschritteneren Abfrage-Handler entwickeln:

$query = "SELECT * FROM 'users'";
$result = mysql_query($query) or trigger_error(mysql_error()." ".$query);

Das Problem mit Ihrer aktuellen Abfrage ist 'users' Teil. Zum Trennen von Zeichenfolgen müssen einfache Anführungszeichen verwendet werden, während für die Bezeichner Backticks verwendet werden müssen:

SELECT * FROM `users`

Um diese Fehler während der Entwicklung zu sehen, fügen Sie diese Zeilen am Anfang Ihres Codes hinzu, um sicherzustellen, dass Sie jeden aufgetretenen Fehler sehen können

ini_set('display_errors',1);
error_reporting(E_ALL);

Auf dem Produktionsserver sollte jedoch der Wert in der ersten Zeile von 1 auf 0 geändert werden