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

Hvordan kan jeg fejlsøge, hvorfor den enkleste MySQL-forespørgsel returnerer falsk?

En obligatorisk opdatering :da mysql ext ikke er mere, er her svar på to resterende MySQL API'er, som jeg skrev på mit websted baseret på erfaringerne fra at besvare 1000'er spørgsmål om Stack Overflow:

Kort sagt, for mysqi skal følgende linje tilføjes før mysqli_connect() ring:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

mens for PDO skal den korrekte fejltilstand indstilles, for eksempel

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

Fra det gamle mysql ext,

For at få en fejl fra mysql_query() du skal bruge mysql_error() funktion.
Så kør altid alle dine forespørgsler på denne måde, i det mindste indtil du udvikler en mere avanceret forespørgselshåndtering:

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

problemet med din aktuelle forespørgsel er 'users' en del. Enkelte anførselstegn skal bruges til at afgrænse strenge, mens du for identifikatorerne skal bruge backticks:

SELECT * FROM `users`

For at se disse fejl under udviklingen skal du tilføje disse linjer øverst i din kode for at være sikker på, at du kan se alle fejl, der er opstået

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

på produktionsserveren bør værdien på den første linje dog ændres fra 1 til 0



  1. openrowset for excel:kan vi springe flere rækker over?

  2. mysql_real_escape_string og array_map returnerer tomme strenge?

  3. Hvordan får jeg den maksimale værdi for et heltal i SQL?

  4. JSON koder MySQL-resultater