Если необходимо выполнить несколько запросов. Некоторые из параметров перекрываются, некоторые - нет.Array имеет больше параметров, чем подготовленный оператор PDO вызывает ошибку
Я хотел создать один массив, содержащий данные для всех параметров для всех запросов.
Я решил, что если массив содержит значения, которые подготовили заявление не было бы игнорировать их, но его давая мне эту ошибку:
Invalid parameter number: number of bound variables does not match number of tokens
вот что я имею в виду:
$data = array('a' => $a, 'b' => $b, 'c' => $c, 'd' => $d);
$data['e'] = "e";
$STH = $this->PDO->prepare("INSERT INTO table1 (fieldA, fieldB, fieldE) VALUES (:a, :b, :e)");
$STH->execute($data);
$data['f'] = "f";
$STH = $this->PDO->prepare("INSERT INTO table2 (fieldA, fieldD, fieldF) VALUES (:a, :d, :f)");
$STH->execute($data);
ли есть способ разрешить это? или нужно создавать разные массивы каждый раз?
примечание: сообщение об ошибке указывает, что PDO использует эмулированные подготовленные операторы. Если вы используете PDO_MYSQL, это значение по умолчанию, так как php 5.1.something. Причина, по-видимому, заключалась в том, что MySQL не использовал кеш запросов для подготовленных операторов до версии сервера 5.1.17. Если вы используете сервер> = 5.1.17, вам может потребоваться установить «PDO :: ATTR_EMULATE_PREPARES» в 0 - в зависимости от того, как вы фактически используете инструкции. – VolkerK