requête correcte pour MysqlWorkbench mais pas pour PDO
Bonsoir,
voici mon code PHP :
Code:
1 2 3 4 5 6 7 8
| $sql = <<<sql
insert into search (user_id, ville_id)
values ( (select user_id from user where user_login=:user_nom)
, (select ville_id from villes where ville_nom LIKE :ville_nom)
)
sql;
$smt = $pdo->prepare($sql);
$res = $smt ->execute(array(':user_login' => $user_nom,':ville_nom' => "%".$ville_nom."%")); |
et le message d'erreur :
Citation:
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number in C:\projets\dvp\copie\search.php:65 Stack trace: #0 C:\projets\dvp\copie\search.php(65): PDOStatement->execute(Array) #1 {main} thrown in C:\projets\dvp\copie\search.php on line 65
Pourtant si je teste la même requête avec un jeu de données (n'importe lequel) avec MysqlWorkbench, l'insertion est bien faite.
Code:
1 2 3
| insert into search (user_id, ville_id)
values ( (select user_id from user where user_login='laurent')
, (select ville_id from villes where ville_nom LIKE '%mad%')) |
Voici le DDL des tables search, user et villes :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| CREATE TABLE `search` (
`user_id` varchar(30) NOT NULL DEFAULT 'null',
`ville_id` varchar(11) NOT NULL DEFAULT 'null'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `user` (
`user_id` tinyint NOT NULL AUTO_INCREMENT,
`user_login` varchar(20) NOT NULL,
`user_password` varchar(34) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM AUTO_INCREMENT=19 DEFAULT CHARSET=latin1;
CREATE TABLE `villes` (
`ville_ID` int NOT NULL AUTO_INCREMENT,
`ville_nom` varchar(15) NOT NULL,
`villes_texte` text NOT NULL,
PRIMARY KEY (`ville_ID`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1; |
Pourquoi SVP ?