sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag felsöka varför den enklaste MySQL-frågan returnerar falskt?

En obligatorisk uppdatering :eftersom mysql ext inte finns längre, här är svaren för två återstående MySQL API:er som jag skrev på min webbplats baserat på erfarenheten från att svara på 1000-tals frågor om Stack Overflow:

Kort sagt, för mysqi måste följande rad läggas till före mysqli_connect() ring:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

medan för PDO måste rätt felläge ställas in, till exempel

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

Från och med den gamla mysql ext,

För att få ett felmeddelande från mysql_query() du måste använda mysql_error() funktion.
Så kör alltid alla dina frågor på detta sätt, åtminstone tills du utvecklar en mer avancerad frågehanterare:

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

problemet med din nuvarande fråga är 'users' del. Enstaka citattecken måste användas för att avgränsa strängar medan du för identifierarna måste använda backticks:

SELECT * FROM `users`

För att se dessa fel under utveckling, lägg till dessa rader högst upp i koden för att vara säker på att du kan se alla fel som uppstått

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

på produktionsservern bör dock värdet på den första raden ändras från 1 till 0



  1. Hitta en sträng genom att söka i alla tabeller i SQL Server

  2. SQLSTATE[HY000] [2002] php_network_getaddresses:getaddriinfo misslyckades:Namn eller tjänst okänd

  3. SQL Server 2016:View Designer

  4. Försöker få in egendom av icke-objekt