나는 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
위의 코드를 실행,이 쿼리를 실행 가리키고 나타나는 그러나, 위의 코드를 사용하여이 쿼리를 실행하고 아래의 쿼리를 실행 다른 답을 얻을 수? 당신이 bindParam()
을 사용하고 있는지
SELECT * FROM tableA
WHERE tableA.id IN (17)
LIMIT 10
가 나는 또한 나에게 배열의 두 요소를 알려주는 foreach
루프에서 문을 배치 한 (11 & 17)은 $ stmt를