2012-09-14 2 views
5

PHP에서 PDO를 사용하여 결과 집합이 비어 있는지 확인하려면 어떻게합니까?PHP의 PDO를 사용하여 db 쿼리 결과를 확인하는 방법

$SQL = "SELECT ......... ORDER BY lightboxName ASC;"; 
$STH = $DBH->prepare($SQL); 
$STH->bindParam(':member_id', $member_id); 
$STH->execute(); 
$STH->setFetchMode(PDO::FETCH_ASSOC); 

while($row = $STH->fetch()) { 
    $lightbox_name = $row['lightboxName']; 
    $lightbox_id = $row['lightboxID']; 
    echo '<option value="'.$lightbox_id.'">'.$lightbox_name.'</option>'; 
} 

내가 이런 식으로 작업을 수행하는 데 사용 :

$result = mysql_query("SELECT ...... ORDER BY lightboxName ASC;"); 
if(!$result) { echo 'No results found!'; } 

을하지만, 단지 예상대로 작동하지 않는 것 PDO와 준비 제표 및 $STH에 대해 확인을 사용하기 시작했다 - 항상 가치가있다!

답변

8

내가 rowCount() 사용하려고합니다 : 관련 PDOStatement에 의해 실행 된 마지막 SQL 문이 SELECT 문 인 경우 일부 데이터베이스 월,

: 설명서에 따라,

$rows_found = $STH->rowCount(); 

을하지만, 해당 문에 의해 반환 된 행 수인 을 반환합니다. 그러나이 동작은 모든 데이터베이스에 대해 이 보장되지 않으므로 휴대용 응용 프로그램에 의존해서는 안됩니다.

작동하지 않는 경우 설명서에 언급 된 다른 방법을 사용할 수 있습니다. 당신은 물론 또한 루프를 변경하고 루프 후 값을 확인, 당신의 while 루프 전에 변수를 설정할 수 있습니다

... 여기 OK

+0

Perfect. 의도 한대로 작동합니다.난 그냥 이것에 대해 읽고 다른 방법은 columnCount()를 사용하는 것입니다. rowCount()와 columnCount() 사이에 성능 차이가 있다고 생각합니까? – ShadowStorm

+0

@ShadowStorm'columnCount()'는 초고속이어야하지만, 가능한 경우 다시'rowCount()'가되어야합니다. 확실하게 테스트해야합니다. – jeroen

+1

'columnCount()'는 모든 테스트 케이스에서'0'을 반환하기 때문에 가장 잘 작동합니다. 'rowCount()'는 종종 수정 된 행을 리턴하고 논리를 버립니다. – Ben

1

변수에 대한 정보 만 덤프하면됩니다.

var_dump($STH) 

편집

난 그냥 질문이 있어요. 이를 위해 rowCount() 기능이 있습니다. 행 수에 $STH->rowCount();을 사용하고 비교하십시오.

+2

내 질문에 대한 답변이 아닙니다. 내 변수를 버리고 싶지 않아. 데이터베이스 쿼리가 결과를 반환했는지 확인하고 싶습니다. – ShadowStorm

+0

return $ result와 print_r()과 같은 일을합니다. –

+0

@ mk_89 : $ 결과 변수가 없습니다. $ STH 변수가 있고 결과 세트가 있는지 여부에 관계없이 항상 데이터를 포함합니다. – ShadowStorm

0

가이 작업을 수행하는 코드이며, 마지막으로 몇 시간 후 주위를 둘러보고 일부 대답과 일치하는 것을 믹스하는 것은 실제로 select 문에서 계산을 반환하는 것입니다. SQL은 분명히 select 문입니다. $ username1은 username의 텍스트 상자 게시물입니다. $ password1은 사용자 이름 설정과 동일합니다. 그 외에도 작업을 수행하는 데 필요한 모든 것을 갖춰야 만 단순히 내 대신 변수를 대체 할 수 있습니다. 나는 내가 원하는 것을 정확히 얻기 ​​위해 노력하면서 잠시 동안 사람들이 시간을 절약 할 수 있기를 바랍니다. 이 솔루션은 select 문이 있고 무언가를 반환 할 때 계속 진행하거나 중지 할 수 있기를 원할 때 사용됩니다.

SQL = 'SELECT * from Users WHERE Username = :Username AND Password = :Password'; 
STH = $conn->prepare($SQL); 
STH->bindParam(':Username', $username1); 
STH->bindParam(':Password', $password1); 
STH->execute(); 
STH->setFetchMode(PDO::FETCH_ASSOC); 


row_count = $STH->rowCount(); 
관련 문제