Bonsoir,

voici mon code PHP :

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
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 sql : Sélectionner tout - Visualiser dans une fenêtre à part
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 sql : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?