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 <[email protected]>
.
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();