Наличие следующей ошибки при создании динамического запроса в pdo. & quot; PDOStatement :: execute (): SQLSTATE [HY093]: недопустимый номер параметра & quot;

Я сталкиваюсь с этой ошибкой при переносе моего кода в pdo. >> «PDOStatement :: execute (): SQLSTATE [HY093]: недопустимый номер параметра: число связанных переменных не соответствует количеству токенов»

Я создаю запрос динамически. Вот мой код:

           $upquery2= $pdo->prepare('UPDATE contact SET '.$pdoUp.' WHERE
Cid=:Cid');
$upquery2->execute([$upd]);
$upres = $upquery2->rowCount();

Результат печати готового заявления выглядит так:

UPDATE contact SET `name=:name,designation=:designation,company=:company,location=:location,phone=:phone,whatsapp=:whatsapp,direct=:direct,text=:text,email=:email,website=:website,chat=:chat,facebook=:facebook,linkedin=:linkedin,skype=:skype,google=:google,notes=:notes WHERE Cid=:Cid`

Распечатать результат $ upd

$upd = ''name'=>'Mahendra Singh Dhoni','designation'=>' Cricketer','company'=>' BCCI','location'=>'India ','phone'=>'+90874387439','whatsapp'=>'89098779','direct'=>'99-9990008','text'=>'903009332','email'=>'msd@msd.com','website'=>'http://www.msd.com/','chat'=>'99999000','facebook'=>'https://web.facebook.com/','linkedin'=>'https://www.linkedin.com','skype'=>'abcd','google'=>'https://plus.google.com/','notes'=>'Mahendra Singh Dhoni is an Indian cricketer.','Cid'=>'28''

Когда я копирую и вставляю напечатанные значения $ upd и $ pdoUp прямо в мой код, это работает.

$stmt = $pdo->prepare(' UPDATE contact SET name=:name,designation=:designation,company=:company,location=:location,phone=:phone,whatsapp=:whatsapp,direct=:direct,text=:text,email=:email,website=:website,chat=:chat,facebook=:facebook,linkedin=:linkedin,skype=:skype,google=:google,notes=:notes WHERE Cid=:Cid');
$stmt->execute(['name'=>'abcd','designation'=>' xyz','company'=>' zxc','location'=>'India ','phone'=>'+90874387439','whatsapp'=>'89098779','direct'=>'99-9990008','text'=>'903009332','email'=>'msd@msd.com','website'=>'http://www.msd.com/','chat'=>'99999000','facebook'=>'https://web.facebook.com/','linkedin'=>'https://www.linkedin.com','skype'=>'abcd','google'=>'https://plus.google.com/','notes'=>'Mahendra Singh Dhoni is an Indian cricketer.','Cid'=>'28']);

Может кто-нибудь сказать мне, где я не прав?

-1

Решение

1-й: Вместо строки вам нужно создать массив

$upd =array('name'=>'abcd','designation'=>' xyz','company'=>' zxc','location'=>'India ','phone'=>'+90874387439','whatsapp'=>'89098779','direct'=>'99-9990008','text'=>'903009332','email'=>'msd@msd.com','website'=>'http://www.msd.com/','chat'=>'99999000','facebook'=>'https://web.facebook.com/','linkedin'=>'https://www.linkedin.com','skype'=>'abcd','google'=>'https://plus.google.com/','notes'=>'Mahendra Singh Dhoni is an Indian cricketer.','Cid'=>'28');

2-й: И передать параметр, как это

$upquery2->execute($upd);

Замечания : Вы пытаетесь построить массив из строки. на этом пути то, что вы пробовали, невозможно.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector