2013-10-30 2 views
0

그래서 아주 간단한 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) 
또한
+0

, 당신은 ** 정확한 ** 동일한 쿼리를 실행할 때 어떻게해야합니까 무엇을 phpmyadmin 또는 mysql 콘솔에서? –

+1

PMA에서 나는 세 줄을 모두 얻습니다. 그게 이상한 일이야. – Jeff

+1

그런 다음 여기에 추가 한 코드 뒤에 오류가 있어야합니다. 어떻게 출력을 표시하고 있습니까? 나는 그 오류가 바로있을 것이라고 내기한다 –

답변

0
$stmt = implode("','", $filenames); 
$query = "SELECT id FROM files WHERE name IN ('" . $stmt . "') "; 
$query2 = $this->db->prepare($query); 

, print_r을 사용하시기 바랍니다 디버그하려면 var_dump.

같은, var_dump($query)print_r($filenames)

+0

디버깅 방법을 권장한다면 XDebug 또는 Zend Debugger가 더 나은 선택이라고 생각할 것입니다. – Phil

+0

구문을 잘 보았습니다. , 그리고 그것이 어떻게 하나의 줄만 반환하는지 알 수 있습니다. 또한 내파 방식은 기능적으로 유사하므로 (덕분에) 한 줄만 반환합니다. – Jeff

+0

@ 제프, PMA에서 하나의 행을 얻었습니까? 데이터 (DB 및 $ 파일 이름)를 입력하십시오. –

0
당신은 모든 값을 인쇄하기 위해 결과 집합을 반복한다

: 또한

while ($query2->fetch()) { 
    // output 
} 
관련 문제