그래서 아주 간단한 SELECT 쿼리라고 생각합니다. 쿼리 자체는 다음과 같습니다.MySQL 하나의 행을 반환하는 곳
"SELECT id FROM files WHERE name IN ("me_me-about.jpg", "me_me-blog.jpg", "me_me-.jpg")
여기서 데이터베이스에있는 세 파일의 ID를 원합니다. 그들은 테이블에 있습니다. ID는 고유합니다. (필자는 궁금한 점을 대비해 사용자 ID와 연관시키기 위해 ID를 접합 테이블에 삽입 할 수 있도록이 작업을 수행하고 있습니다.) $ filenames 배열을 사용하여 구문을 작성했습니다. 파일 이름의 차원 배열 :
$stmt = '(';
for ($i = 0; $i < sizeof($filenames); $i++) {
$stmt .= '"' . $filenames[$i] . '", ';
}
$stmt = substr($stmt, 0, -2);
$stmt .= ')';
$query2 = $this->db->prepare("SELECT id FROM files WHERE name IN " . $stmt);
쿼리는 마지막 행 하나를 반환합니다. 내가 본 WHERE ... IN 구문의 모든 것에서, 그렇게해서는 안된다. 내가 볼 수없는 무언가 건가요?
PMA (ID, 이름, 년 [나는 다시 그에게오고 한번이 작동])에서 "파일"의CSV 테이블 덤프 : $ 파일 이름의
"20";"me_me-about.jpg";;"0"
"21";"me_me-blog.jpg";;"0"
"22";"me_me-.jpg";;"0"
에서 print_r :
Array ([0] => me_me-about.jpg [1] => me_me-blog.jpg [2] => me_me-.jpg)
(위의 내 코드) 원래의 형태로 $ stmt에의
에서 print_r :
("me_me-about.jpg", "me_me-blog.jpg", "me_me-.jpg")
시도 - 캐치 실행합니다. $ _SESSION에 $ 행 출력 그래서 난 관련 페이지에서 그것을에서 print_r 수 있습니다 : $ _SESSION의
try {
$query2->execute();
$rows = $query2->fetch();
$_SESSION['stmt'] = $rows;
} catch (PDOException $e) {
die($e->getMessage());
}
인 print_r를 [ 'STMT는'] :
Array ([id] => 22 [0] => 22)
또한
, 당신은 ** 정확한 ** 동일한 쿼리를 실행할 때 어떻게해야합니까 무엇을 phpmyadmin 또는 mysql 콘솔에서? –
PMA에서 나는 세 줄을 모두 얻습니다. 그게 이상한 일이야. – Jeff
그런 다음 여기에 추가 한 코드 뒤에 오류가 있어야합니다. 어떻게 출력을 표시하고 있습니까? 나는 그 오류가 바로있을 것이라고 내기한다 –