Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Problem z dopasowaniem wierszy w bazie danych za pomocą PDO

Problemy spowodowane danymi

Najprawdopodobniej w danych wejściowych (lub w bazie danych) znajdują się przekonwertowane lub niedrukowalne znaki. Na przykład może to być znak wysuwu wiersza lub specyficznie zakodowany symbol, lub niektóre znaki, takie jak < i > konwertowane na jednostki HTML. W rezultacie zapytanie zawiera <[email protected] > nigdy nie będzie pasować do tekstu <[email protected] > .

Problem polega na tym, że to tylko przypuszczenie i nikt nie może ci powiedzieć, jaki jest rzeczywisty problem, ponieważ jest Twój baza danych, Twoja dane wejściowe i tylko ty może znaleźć problem.

Napisałem artykuł, który wyjaśnia jak debugować problemy z PDO .

Aby debugować konkretny problem, potrzebujesz

  • upewnij się, że pełne raportowanie błędów jest włączone zarówno dla PDO, jak i PHP. To naprawdę pomaga, pokazując sporadyczne błędy typograficzne, błędy ortograficzne i tym podobne
  • przeanalizuj zarówno dane w bazie danych, jak i dane wejściowe, aby znaleźć różnicę. bin2hex() funkcja pomogłaby, ujawniając wszystkie niedrukowalne i przekonwertowane znaki, zarówno w bazie danych, jak i danych wejściowych.

Problemy spowodowane danymi uwierzytelniającymi połączenie

Innym częstym problemem jest sytuacja, gdy masz kilka baz danych i łączysz się z niewłaściwą, która nie zawiera żądanych danych. Ten problem jest podobny do tego , więc po prostu postępuj zgodnie z tą samą procedurą, sprawdzając tylko nie listę tabel, ale wiersze danych.

Nieistotna, ale ważna uwaga

Na marginesie, ale bardzo ważne:przygotowane oświadczenie to kultowy kod ładunku który nic nie chroni . Oto jak to musi być:

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie Like In MySQL do operacji wyszukiwania przy użyciu wzorca

  2. Wydajność MySQL:MyISAM kontra InnoDB

  3. wybieranie unikalnych wartości z kolumny

  4. MySQL — spraw, aby istniejące pole było unikalne

  5. Wstaw MySQL do Wybierz