이 코드가PDO 쿼리
$Check=$connection->prepare("SELECT ID FROM USERS WHERE EMAIL IN('Email1','Email2')");
$Check->execute(array(
':Array' => $Array,
));
이 작동을하지만, 나는 SQL Injection을 피하기 위해 배열을 바인딩하지 않을 것이다. 어떻게 해결할 수 있습니까?
이 코드가PDO 쿼리
$Check=$connection->prepare("SELECT ID FROM USERS WHERE EMAIL IN('Email1','Email2')");
$Check->execute(array(
':Array' => $Array,
));
이 작동을하지만, 나는 SQL Injection을 피하기 위해 배열을 바인딩하지 않을 것이다. 어떻게 해결할 수 있습니까?
당신은 하나 개의 요소로 폭파 목록을 결합하지 않으려는 것이 아니라 각각의 값을 개별적 그래서 문장의 끝 WHERE EMAIL IN (?,?)
것 ?
를 사용하여 : 결과를 다시
$values = ["Email1","Email2"];
# This should give you ?,?
$bindstr = implode(",",array_fill(0,count($values),'?'));
$query = $connection->prepare("SELECT ID FROM USERS WHERE EMAIL IN({$bindstr})");
# Use the raw values individually in the execute
$query->execute($values);
희망 얻어야한다 를 찾고 있습니다.
도움을 많이 주셔서 감사합니다. 첫 번째 행에서 [...]을 (를) 사용하는 이유를 설명해 주시겠습니까? 왜 IN CLAUSE에 {..}을 추가 했습니까? 도와주세요, 좋은 날을 보내길 바랍니다 :) – user9158219
오, 미안 해요, PHP의 최신 버전에서'[''''''''''('')''와''' ']'=')'. – Rasclatt
해명 해 주셔서 고마워요 :) – user9158219
쉼표로 구분 된 값은 좋지 않습니다. 데이터베이스 정규화를 고려하십시오. –