2 votes

Mysql: comparer des entiers avec des chaînes de caractères et renvoyer vrai

Y a-t-il un opérateur équivalent à === en MySQL qui vérifie à la fois la valeur et le type de données ?

J'ai un champ u_id dans une base de données qui est de type int

Maintenant, depuis la page de connexion où l'utilisateur entre son identifiant et pendant la vérification de la logique, j'écris le code ci-dessous

$loginCode = mysql_real_escape_string($_POST[userCode]);
$sql=SELECT * FROM tbl_user WHERE u_id=".$loginCode ;
$result=$db->query($sql);

Cela renvoie une ligne

Maintenant, lorsque j'entre 2.0, cela renvoie également la ligne, ce que je ne veux pas. Ce que je veux, c'est que lorsque 2.0 est écrit, la requête ne renvoie aucune ligne.

gettype($loginCode) renvoie une chaîne de caractères....

C'est étrange comment un champ de type entier(u_id) peut être comparé à un champ de type chaîne de caractères dans mysql ? Merci de me suggérer une solution ou une meilleure façon de procéder

3voto

remi bourgarel Points 3893

Vous pouvez convertir vos données et les comparer en tant que chaîne :

"SELECT * FROM tbl_user WHERE CAST(u_id as nvarchar(3))=".$loginCode

2voto

Andomar Points 115404

Toutes les bases de données SQL convertiront implicitement un flottant en entier.

Vous pourriez vous assurer que votre code de connexion ne contient que des chiffres avec une expression régulière. Par exemple :

WHERE u_id =  AND  RLIKE '^[0-9]+$'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X