我使用一個循環來處理一些查詢和所有查詢都是一樣的,除了一個不使用參數的其他人:是否可以統計PDO準備語句中的參數數量?
$queries = array(
'query1' = "SELECT * FROM table_1 WHERE id=:id",
'query2' = "SELECT * FROM table_2 WHERE id=:id",
'query3' = "SELECT * FROM table_3"
);
$params = array(':id',1);
foreach($queries as $q) {
$st = $pdo->prepare($q);
if($st->execute($params)) {
// do stuff with results
} else {
echo json_encode($st->errorInfo());
}
}
這裏的問題是,$ ST->執行($ params)在沒有定義參數的查詢上不起作用,這就是爲什麼我想知道在發送之前是否可以分析查詢的原因。
這是假代碼,只要有一個參數(:id)或none,它應該工作而不管查詢結構如何。
更新,解決了:
我如何申請通過@ Jonast92給出瞭解決方案:
foreach($queries as $q) {
$st = $pdo->prepare($q);
if($st->execute(substr_count($q,":") > 0 ? $params : null)) {
// do stuff with results
} else {
echo json_encode($st->errorInfo());
}
}
你正在寫這些查詢在數組中提前,對吧?爲什麼不製作另一個包含params數量的數組?因此,您只需根據您嘗試運行哪個查詢來查找數組。 – 2014-11-05 22:01:24
這應該是有點動態的,但這個和下面的答案的組合應該工作。謝謝。 – vcanales 2014-11-05 22:03:19
另一種方法是指定'where 1:= id or 1 = 1',基本上顛覆參數。 – 2014-11-05 22:07:36