结果集为空时显示消息

时间:2012-05-23 22:43:42

标签: php sql-server database

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

$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...

3 个答案:

答案 0 :(得分:4)

如果没有找到行,$ presult将包含一个空结果集,但它仍然不会评估为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.');
}

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

感谢。我使用sqlsrv_has_rows()函数让它工作。

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

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