Heim > Datenbank > MySQL-Tutorial > Warum gibt meine PDO-Datenbankzeilenübereinstimmungsabfrage Null zurück, selbst wenn Übereinstimmungen vorhanden sind?

Warum gibt meine PDO-Datenbankzeilenübereinstimmungsabfrage Null zurück, selbst wenn Übereinstimmungen vorhanden sind?

Patricia Arquette
Freigeben: 2024-12-18 17:20:12
Original
253 Leute haben es durchsucht

Why Does My PDO Database Row Matching Query Return Zero Even When Matches Exist?

Abgleich von Zeilen in der Datenbank mit PDO: Fehlerbehebung bei Problemen

Beim Versuch, mithilfe von PDO nach doppelten Zeilen in einer Datenbank zu suchen, kann es zu Problemen kommen bei denen die Ergebnisse von Ihren Erwartungen abweichen. Hier sind mögliche Probleme und Lösungen, die Sie berücksichtigen sollten:

Probleme, die durch SQL-Fehler verursacht werden

Bestätigen Sie, dass Ihre Abfrage fehlerfrei ausgeführt wird. PDO gibt möglicherweise „0“ als Ergebnisanzahl zurück, auch wenn keine Übereinstimmungen vorliegen, was auf ein Abfrageproblem hinweist.

Durch die Bedingung verursachte Probleme

Überprüfen Sie Ihre Abfragebedingungen für Exklusivität. Bedingungen wie „WHERE col=1 AND col=2“ geben immer „0“ zurück. Vereinfachen Sie die Bedingungen, um das Problem zu isolieren.

Durch die Daten verursachte Probleme

  • Stellen Sie sicher, dass die an der Abfrage beteiligten Variablen vorhanden sind und Werte enthalten.
  • Überprüfen Sie die Eingabedaten auf nicht druckbare oder konvertierte Zeichen. Codieren Sie diese Zeichen mit rawurlencode(), um sie sichtbar zu machen.

Debugging-Tipps

  • Vollständige Fehlerberichterstattung für PDO und PHP aktivieren.
  • Untersuchen Sie die Daten in der Datenbank und die Eingabewerte auf Unterschiede. Verwenden Sie urlencode(), um nicht druckbare Zeichen anzuzeigen.
  • Stellen Sie sicher, dass Sie mit der richtigen Datenbank verbunden sind.
  • Überprüfen Sie den Zeichensatz und die Kodierungskonfigurationen für die Datenbank und PHP.

Beispielproblem und -lösung

Ihre Abfrage enthält eine Zeichenfolge mit HTML-Entitäten, z. B „SELECT count(*) FROM inbox WHERE ... AND from_email = „abc Offers <[email protected]>““ Bei Ausführung in phpMyAdmin funktioniert diese Abfrage, gibt aber über PDO „0“ zurück. Die HTML-Entitäten („<“ und „>“, konvertiert in Entitäten) verursachen die Nichtübereinstimmung. Durch Ändern der Abfrage zum Entfernen dieser Entitäten wird das Problem behoben:

$sql = 'SELECT count(*) FROM inbox WHERE uid = ? AND from_email = "abc Offers [email&#160;protected]"';
$result = $link->prepare($sql); 
$result->execute([$email_number,$email_f]); 
$number_of_rows = $result->fetchColumn();
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum gibt meine PDO-Datenbankzeilenübereinstimmungsabfrage Null zurück, selbst wenn Übereinstimmungen vorhanden sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage