sql >> Base de Datos >  >> RDS >> Mysql

Tiene problemas con las filas coincidentes en la base de datos usando PDO

Problemas causados ​​por los datos

Lo más probable es que haya algunos caracteres convertidos o no imprimibles en los datos de entrada (o base de datos). Por ejemplo, podría haber un carácter de avance de línea o un símbolo codificado peculiarmente, o algunos caracteres como < y > convertidos en entidades HTML. Como resultado, la consulta contiene <[email protected]> nunca coincidirá con un texto &lt;[email protected]&gt; .

El problema es que esto es solo una conjetura y nadie puede decirle cuál es el problema real, porque es su base de datos, su ingresar datos y solo usted puede encontrar el problema.

Escribí un artículo que explica cómo solucionar problemas de PDO .

Para depurar un problema en particular, necesita

  • asegúrese de que el informe de errores completo esté habilitado tanto para PDO como para PHP. Realmente ayuda, mostrándote errores tipográficos ocasionales, errores de ortografía y similares
  • examinar tanto los datos en la base de datos como la entrada para encontrar la diferencia. bin2hex() La función ayudaría, revelando todos los caracteres no imprimibles y convertidos, tanto en la base de datos como en la entrada.

Problemas causados ​​por las credenciales de conexión

Otro problema frecuente es cuando tienes varias bases de datos y te conectas a la incorrecta que no tiene los datos solicitados. Este problema es similar a este , así que solo sigue la misma rutina, solo verificando no la lista de tablas sino las filas de datos.

Una nota irrelevante pero importante

En una nota al margen, pero muy importante sin embargo:su declaración preparada es un código de culto de carga que no protege nada . Así es como debe ser:

$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();