J'utilise PDO et les instructions préparées, mais je ne peux pas sembler obtenir des résultats lorsque en comparant un champ ENUM avec un entier.PDO ne peut pas comparer mysql ENUM en utilisant des entiers dans les instructions préparées
Exemple:
$db = new PDO('mysql:host=localhost;dbname=****', '***', '***');
$s = $db->prepare('SELECT id FROM t2 WHERE lang = ?');
$s->execute(array('en')); // Works
print_r($s->fetchAll());
$s->execute(array(2)); // Does not work
print_r($s->fetchAll());
Je teste contre ce tableau:
DROP TABLE IF EXISTS t2;
CREATE TABLE t2 (
id int(10) NOT NULL AUTO_INCREMENT,
lang enum('no','en','fr') NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO t2 (id, lang) VALUES (NULL , 'en');
Toute idée sur la façon d'obtenir ce travail?
Je convertis à PDO, et je préfère ne pas réécrire toutes les constantes, les énumérations et les requêtes dans mon application :(
Très bien. Je vais me creuser un gros trou et je ne sortirai pas tant que toutes les ENUM n'auront pas été remplacées par des clés étrangères intelligentes. * soupir * – Joernsn