J'obtiens des résultats différents en exécutant exactement la même requête à l'aide d'instructions régulières et d'instructions préparées, et je pense qu'il s'agit d'un bogue de conversion de type.
mysql> show columns from server where field = "vlan";
+-------------+--------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------+------+-----+---------+-------+
| vlan | int(5) | YES | MUL | NULL | |
+-------------+--------+------+-----+---------+-------+
mysql> select hostname from server where `vlan` = '184.182' limit 1;
Empty set (0.00 sec)
mysql> prepare stupid from "select hostname from server where `vlan` = ? limit 1";
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql> set @vlan = '184.182';
Query OK, 0 rows affected (0.00 sec)
mysql> execute stupid using @vlan;
+-------------------+
| hostname |
+-------------------+
| web20.servers.com |
+-------------------+
1 row in set (0.00 sec)
la valeur réelle de vlan
es 184
Il semble que la façon dont mysql gère les conversions de type soit différente pour les instructions préparées et les instructions normales. Est-ce que cela a un sens ?