sql >> Database >  >> RDS >> Mysql

Problemen met het matchen van rijen in de database met behulp van PDO

Problemen veroorzaakt door de gegevens

Hoogstwaarschijnlijk zijn er enkele geconverteerde of niet-afdrukbare tekens in de invoergegevens (of database). Er kan bijvoorbeeld een linefeed-teken of een bijzonder gecodeerd symbool zijn, of sommige tekens zoals < en > omgezet in HTML-entiteiten. Als gevolg hiervan bevat de zoekopdracht <[email protected]> komt nooit overeen met een tekst &lt;[email protected]&gt; .

Het probleem is dat dit slechts een gok is en niemand je kan vertellen wat het werkelijke probleem is, omdat het je is database, uw gegevens invoeren en alleen jij kan het probleem vinden.

Ik heb een artikel geschreven waarin wordt uitgelegd hoe u uw PDO-problemen kunt debuggen .

Om een ​​bepaald probleem te debuggen, heb je

  • zorg ervoor dat de volledige foutrapportage is ingeschakeld voor zowel PDO als PHP. Het helpt echt als je af en toe typografische fouten, spelfouten en dergelijke laat zien
  • onderzoek zowel de gegevens in de database als de invoer om het verschil te vinden. bin2hex() functie zou helpen, door alle niet-afdrukbare en geconverteerde karakters te onthullen, zowel in de database als in de invoer.

Problemen veroorzaakt door de verbindingsgegevens

Een ander veelvoorkomend probleem is wanneer u meerdere databases heeft en verbinding maakt met de verkeerde die niet over de gevraagde gegevens beschikt. Dit probleem is vergelijkbaar met deze , dus volg gewoon dezelfde routine en controleer niet alleen de lijst met tabellen, maar de gegevensrijen.

Een irrelevante maar belangrijke opmerking

Even terzijde, maar niettemin erg belangrijk:je voorbereide verklaring is een cargo cult-code dat niets beschermt . Hier is hoe het moet zijn:

$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. MySQL INSERT- of REPLACE-opdrachten

  2. Problemen met MySQL-prestaties identificeren met trage zoekopdrachten

  3. Een lijst met database-e-mailaccounts krijgen in SQL Server (T-SQL)

  4. Hoe krijg je mooi opgemaakte resultaten van een Oracle-procedure die een referentiecursor retourneert?