2012-12-09 2 views
0
$sql = "SELECT # FROM users WHERE onduty = 1 AND loc_id = '{$site}';"; 
$result = mysql_query($sql); 

단순히 true 또는 false인지 테스트하고 싶습니다. 나는 그것이 사실이어야한다 알고true 또는 false에 대한 SQL 쿼리 테스트

if (!$result) { //do this; } 

하지만, 내 테스트에서, 나는 거짓 점점 오전 :이 0 행을 반환하는 경우에, 나는 다음 라인 같은 것을 원한다. 이 논리가 여기 논리인가? 이 내가 사용하는 것입니다 :

**

ANSWER (즉 내가 여기 해달라고 부탁하지 것입니다, 그래 내가 mysqli_query를 사용해야합니다 알고주의)

$login_state = false; 
if(mysql_num_rows(mysql_query("SELECT 1 FROM users WHERE onduty = 1 AND loc_id = '{$site}';"))) { 
    $login_state = true; 
} 
+0

참조; ' –

+0

** heads up! ** PHP의 향후 버전은'mysql_' 계열의 기능을 비추천 및 제거합니다. 이제 [PDO로 전환] (http://php.net/book.pdo) 또는 [mysqli] (http://php.net/book.mysqli)에 좋은 시간이 될 것입니다. – Charles

+0

@NullPointer, URL 단락 문자 및 코드 일부가 사용하는 문구는 신경 쓰지 않습니다. – Charles

답변

5

사용 EXISTS :

"SELECT EXISTS (SELECT 1 FROM users WHERE onduty = 1 AND loc_id = '{$site}');" 

조건과 일치하는 행이 없으면 원래 쿼리는 "행 없음"을 반환합니다. 이 때마다 TRUE (1) 또는 FALSE (0)이 반환됩니다. 여러 행이 기준과 일치하고 적어도 하나 개의 행이 존재하는지 여부에만 관심이있을 수 있습니다 경우

More about EXISTS in the manual.

EXISTS의 성능은 일반 쿼리 우수하다. 첫 번째 행을 찾자 마자 멈출 수 있으며 0 또는 1 만 반환합니다. 사용 mysql_num_rows() 행의 수를 확인하는

->sqlfiddle demo.

+0

당신이 갖고있는 SQL 쿼리를 내가 가진 것으로 바꾼다해도 여전히'$ result = mysql_query ($ sql); '$ 결과는 true 또는 false가 될 것입니다. – KickingLettuce

+0

@KickingLettuce : MySQL이 말했듯이, @KickingLettuce : "TRUE"는 오히려'1'이고,'FALSE'는'0'입니다. –

+0

나는 실제로 true 또는 false 대신에'Resource id # 16'을 얻고 있습니다. – KickingLettuce

3

는 쿼리를 실행에 돌아왔다. '; ";`??처럼 보이는 {$ 사이트}'해야한다 '"

$num_rows = mysql_num_rows($result); 

if($num_rows==0) 
{ 
//nothing returned 
} 
else 
{ 

//rows returned 
} 

mysqli 구현을 해당 들어, mysqli_stmt_num_rows()

`{$ 사이트} 왜