2012-05-23 106 views
0

在以下代码中,如果结果集为空,则代码将继续处理结果。我想要的只是显示“查询失败”。当没有结果时。结果集为空时显示消息

$connInfo = array('UID'=>$user, 'PWD'=>$passwd, 'Database'=>$database); 
$dbconn = sqlsrv_connect($server, $connInfo); 

if($dbconn === false){ 
    die("<br />Error connecting to the database.<br />"); 
} 
//SQL Query 
$query = "SELECT ... FROM somehwere"; 

//Run Query 
$qresult = sqlsrv_query($dbconn, $query); 
if($qresult === false) { 
    die('Query failed.'); 
} 

?> 
...more code... 

回答

4

$ qresult将包含一个空的结果集,如果没有行被发现,但它仍然不会计算为false。

试试这个函数:

http://www.php.net/manual/en/function.sqlsrv-num-rows.php

所以:

if(!sqlsrv_num_rows($qresult)) { 
    die('Query failed.'); 
} 

相反的:

if($qresult === false) { 
    die('Query failed.'); 
} 
0

它不显示 “查询失败”,因为查询有没有失败。它只返回0行。所以,解决方案将使用:

$row_count = sqlsrv_num_rows($qresult); 
if ($row_count > 0){ 
// display stuff 
} 
else{ 
// throw exception 
} 
0

谢谢。我得到它使用sqlsrv_has_rows()函数工作。

if($qresult !== NULL) { 
    $rows = sqlsrv_has_rows($qresult); 
    if($rows === true) { 
     //display success 
    } else { 
     //display error 
    } 
} 

由于某种原因,我无法让sqlsrv_num_rows()为我正常工作。