Problemer forårsaget af dataene
Mest sandsynligt er der nogle konverterede eller ikke-udskrivbare tegn i inputdataene (eller databasen). For eksempel kan der være et linefeed-tegn eller et ejendommeligt kodet symbol eller nogle tegn såsom <
og > konverteret til HTML-enheder. Som et resultat indeholder forespørgslen
<[email protected]
> vil aldrig matche en tekst
<[email protected]
>
.
Problemet er, at dette kun er et gæt, og ingen kan fortælle dig, hvad det faktiske problem er, fordi det er dit database, din inputdata og kun dig kan finde problemet.
Jeg skrev en artikel, der forklarer hvordan du fejlretter dine PDO-problemer .
For at debugge et bestemt problem skal du have
- sørg for, at den fulde fejlrapportering er aktiveret for både PDO og PHP. Det hjælper virkelig, viser dig lejlighedsvise typografiske fejl, stavefejl og lignende
- undersøg både dataene i databasen og inputtet for at finde forskellen.
bin2hex()
funktion ville hjælpe, og afsløre alle ikke-udskrivbare og konverterede tegn i både databasen og inputtet.
Problemer forårsaget af forbindelseslegitimationsoplysningerne
Et andet hyppigt problem er, når du har flere databaser og opretter forbindelse til den forkerte, der ikke har de anmodede data. Dette problem ligner denne , så følg bare den samme rutine, tjek kun ikke listen over tabeller, men datarækkerne.
En irrelevant, men vigtig bemærkning
Til en sidebemærkning, men ikke desto mindre meget vigtigt:din forberedte erklæring er en fragtkultkode der intet beskytter . Her er hvordan det skal være:
$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();