如果必須執行幾個查詢。一些參數重疊,有些則不重疊。數組有比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);
是有辦法讓這個?或者每次都必須創建一個不同的數組?
side-note:錯誤消息表明PDO使用模擬的預處理語句。如果您使用的是自PHP 5.1.something以來的默認PDO_MYSQL。原因很明顯,MySQL在服務器版本5.1.17之前沒有對準備好的語句使用查詢緩存。如果您使用的服務器> = 5.1.17,則可能需要將「PDO :: ATTR_EMULATE_PREPARES」設置爲0 - 具體取決於您實際使用語句的方式。 – VolkerK 2010-08-25 21:44:33