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

3 に答える 3

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.');
}
于 2012-05-23T22:47:16.603 に答える
0

ありがとう。sqlsrv_has_rows()関数を使用して動作させました。

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

何らかの理由で、sqlsrv_num_rows()を正しく機能させることができませんでした。

于 2012-05-24T16:43:34.497 に答える
0

クエリは失敗していないため、「Query Failed」は表示されません。0行を返すだけです。したがって、解決策は次を使用することです。

$row_count = sqlsrv_num_rows( $qresult);
if ($row_count > 0){
// display stuff
}
else{
// throw exception
}
于 2012-05-23T22:52:36.647 に答える