1
我有以下代碼在PHP中查詢基於客戶端發送的數組的數據庫。php pdo綁定多個值問題
$limit = $_POST['limit'];
$userArray = json_decode($_POST['arr'], true);
$queryPlaceholders= implode(',', array_fill(0,count($userArray), '?'));
$stmt = $db->prepare("SELECT * FROM tableA
WHERE tableA.id IN (".$queryPlaceholders.")
LIMIT ?");
foreach($userArray as $k => $val){
$stmt->bindParam(($k+1), $val);
}
$stmt->bindValue(count($userArray) + 1, (int)trim($limit), PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo $result;
此代碼似乎有錯誤。如果我發送包含值11 & 17的陣列,查詢似乎只能用值17運行,而不是兩個11和17
如果我print_r($userArray)
我得到Array ( [0] => 11 [1] => 17 )
,所以我知道PHP有正確的陣列。但是,運行此查詢與上面的代碼,並運行下面的查詢產生不同的答案:
SELECT * FROM tableA
WHERE tableA.id IN (11,17)
LIMIT 10
當運行上面的代碼,這似乎INFACT運行此查詢?
SELECT * FROM tableA
WHERE tableA.id IN (17)
LIMIT 10
我也放在語句在foreach
循環,告訴我該陣列的兩個要素(11 & 17)被綁定到$語句