sql >> Databasteknik >  >> RDS >> Mysql

Har problem med att matcha rader i databasen med PDO

Problem som orsakas av data

Mest troligt finns det några konverterade eller icke-utskrivbara tecken i indata (eller databasen). Det kan till exempel finnas ett radmatningstecken eller en speciellt kodad symbol, eller några tecken som < och > konverteras till HTML-enheter. Som ett resultat av detta innehåller frågan <[email protected] > kommer aldrig att matcha en text <[email protected] > .

Problemet är att detta bara är en gissning, och ingen kan berätta vad det faktiska problemet är, eftersom det är din databas, din indata och bara du kan hitta problemet.

Jag skrev en artikel som förklarar hur du felsöker dina PDO-problem .

För att felsöka ett visst problem behöver du

  • se till att fullständig felrapportering är aktiverad för både PDO och PHP. Det hjälper verkligen, visar dig enstaka typografiska fel, stavfel och liknande
  • granska både data i databasen och indata för att hitta skillnaden. bin2hex() funktion skulle hjälpa, avslöja alla icke-utskrivbara och konverterade tecken, både i databasen och indata.

Problem som orsakas av anslutningsuppgifterna

Ett annat vanligt problem är när du har flera databaser och ansluter till fel en som inte har den efterfrågade informationen. Det här problemet liknar denna , så följ bara samma rutin, kontrollera bara inte listan med tabeller utan dataraderna.

En irrelevant men viktig anmärkning

Som en sidoanteckning, men ändå mycket viktigt:ditt förberedda uttalande är en lastkultkod som skyddar ingenting . Så här måste vara:

$sql = 'SELECT count(*) FROM inbox WHERE uid = ? AND from_email = ?'; 
$result = $link->prepare($sql); 
$result->execute([$email_number,$email_f]); 
$number_of_rows = $result->fetchColumn(); 



  1. SQL, hur sammanfogar man resultat?

  2. ODP.NET Oracle.ManagedDataAccess orsakar ORA-12537 nätverkssession slutet av filen

  3. Hur man förbättrar MySQL AWS-prestanda 2X över Amazon RDS till samma kostnad

  4. Gruvplaner:Inte bara för planens cache