i have a erreur PDOStatement::execute Values with WHERE Condition & HAVING Condition in same requette
how i can make execute preparing value in both of theme WHERE, HAVING
$MyRequetteRecords = " SELECT _md_currencies._fd_currency, ( SELECT GROUP_CONCAT( _md_tasks_level1._fd_name SEPARATOR ' + ') FROM _x_md_currencies_x_md_tasks LEFT JOIN _md_tasks AS _md_tasks_level1 ON _x_md_currencies_x_md_tasks.ID_md_tasks = _md_tasks_level1.ID WHERE _x_md_currencies_x_md_tasks.ID_md_currencies = _md_currencies.ID ) AS Many2Many_Currency From _md_currencies WHERE _md_currencies._fd_currency LIKE '% :value0 %' HAVING Many2Many_Currency LIKE '% :value1 %' "; $ValueRequette=[ 'value0' => 'Currency 1', 'value1' => 'Task' ]; $statement = $bdd_dataManger->prepare($MyRequetteRecords); $statement->execute($ValueRequette); $Record = $statement->fetchAll(PDO::FETCH_ASSOC); $statement->closeCursor();
Erreur : Invalid parameter number: number of bound variables does not match number of tokens
Advertisement
Answer
you first have a problem in your mysql code which would run, so you always should test your queries
WHERE _x_md_currencies_x_md_tasks.ID_md_currencies = _md_currencies.ID),"")
sho9uld the line look like, as column and table name are separated by a dot and ifnull needs also a parameter, so you need to close one brakcket first
The errro in the php part, ist first that you use single quotes alreadx, to determine the string,so using them inside of the string is problematik, as you really don’t need it.
As you see by $ValueRequette=
You have to use the palcehoders name with the double points
$MyRequetteRecords = ' SELECT `_md_currencies`.`_fd_currency`, IFNULL( (SELECT GROUP_CONCAT( _md_tasks_level1._fd_name SEPARATOR ' + ') FROM _x_md_currencies_x_md_tasks LEFT JOIN _md_tasks AS _md_tasks_level1 ON _x_md_currencies_x_md_tasks.ID_md_tasks = _md_tasks_level1.ID WHERE _x_md_currencies_x_md_tasks.ID_md_currencies = _md_currencies.ID),"") AS Many2Many_Currency From `_md_currencies` WHERE `_md_currencies`.`_fd_currency` LIKE :value0 HAVING Many2Many_Currency LIKE :value1 ' $ValueRequette=[ ':value0' => '%' +'Currency 1'+'%' , ':value1' => '%' +'Task'+'%' ]