반응형
ID가 배열에 있는 mysql
저는 1,2,3,4,5와 같은 일련의 ID를 가지고 있으며, 해당 ID가 포함된 mysql의 모든 행을 나열할 수 있기를 원합니다.
가장 쉬운 방법은 문자열을 배열로 변환한 다음 ($array)로 일치시키는 것이라고 생각했지만, 저에게는 작동하지 않습니다. 오류 등이 없지만 행은 반환되지 않습니다.
$string="1,2,3,4,5";
$array=array_map('intval', explode(',', $string));
$query=mysqli_query($conn, "SELECT name FROM users WHERE id IN ('".$array."')");
$array의 var_dump를 실행하면 다음과 같이 됩니다.
array(5) {
[0]=> int(1)
[1]=> int(2)
[2]=> int(3)
[3]=> int(4)
[4]=> int(5)
}
내가 어디서 망쳤는지 알아요?
$string="1,2,3,4,5";
$array=array_map('intval', explode(',', $string));
$array = implode("','",$array);
$query=mysqli_query($conn, "SELECT name FROM users WHERE id IN ('".$array."')");
NB: 구문은 다음과 같습니다.
SELECT * FROM table WHERE column IN('value1','value2','value3')
질문의 의미는 다음과 같습니다.
SELECT name FROM users WHERE id IN ('Array');
아니면 그런 영향을 미칠 수도 있습니다.
대신 다음과 같은 준비된 쿼리를 사용해 보십시오.
$numbers = explode(',', $string);
$prepare = array_map(function(){ return '?'; }, $numbers);
$statement = mysqli_prepare($link , "SELECT name FROM users WHERE id IN ('".implode(',', $prepare)."')");
if($statement) {
$ints = array_map(function(){ return 'i'; }, $numbers);
call_user_func_array("mysqli_stmt_bind_param", array_merge(
array($statement, implode('', $ints)), $numbers
));
$results = mysqli_stmt_execute($statement);
// do something with results
// ...
}
바꾸다
$array=array_map('intval', explode(',', $string));
받는 사람:
$array= implode(',', array_map('intval', explode(',', $string)));
array_map은 문자열이 아닌 배열을 반환합니다.WHERE 절에서 사용하려면 배열을 쉼표로 구분된 문자열로 변환해야 합니다.
언급URL : https://stackoverflow.com/questions/20203063/mysql-where-id-is-in-array
반응형
'programing' 카테고리의 다른 글
rxjs/Subject.d.ts 오류: 클래스 'Subject'가 기본 클래스 'Observable'의 확장을 잘못했습니다. (0) | 2023.08.20 |
---|---|
div에서 클립보드로 텍스트를 복사하는 방법 (0) | 2023.08.20 |
SELECT FROM DUAL로 여러 행이 가능합니까? (0) | 2023.08.20 |
SweetAlert2를 사용하여 탐지되지 않음(약속 없음) 취소 (0) | 2023.08.20 |
Jquery UI 대화 상자에서 "확인" 대화 상자를 구현하는 방법은 무엇입니까? (0) | 2023.08.20 |