Массив имеет больше параметров, чем подготовленный PDO оператор вызывает ошибку - PullRequest
0 голосов
/ 26 августа 2010

Если нужно выполнить несколько запросов. Некоторые параметры перекрываются, некоторые нет.

Я хотел создать один массив, содержащий данные для всех параметров для всех запросов.

Я подумал, что если массив содержит значения, которых нет у подготовленного оператора, он проигнорирует их, но при этом выдаст мне эту ошибку:

Неверный номер параметра: номер связанные переменные не совпадают с числом токенов

вот что я имею в виду:

$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);

Есть ли способ разрешить это? или нужно каждый раз создавать новый массив?

1 Ответ

0 голосов
/ 26 августа 2010

Нет, это не поддерживается.

Кстати, когда дело доходит до поддержки, я всегда чувствовал, что использование метода bindParam приводит к гораздо более читаемому коду.Вот так ...

$STH = $this->PDO->prepare("INSERT INTO table1 ( fieldA, fieldB, fieldE ) VALUES (:a, :b, :e )");
$STH->bindParam(':a', 'a');
$STH->bindParam(':b', 'b');
$STH->bindParam(':e', 'e');
$STH->execute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...