2011-08-19 203 views
7

我試圖通過php頁面從MS SQL中取回數據。我有一個有效的連接,並且正在嘗試一個簡單的SELECT * FROM MyTable,但sqlsrv_num_rows只是空白,不管我做什麼!沒有從sqlsrv_num_rows返回任何東西

這裏是我的代碼:

function connect() { 

    $serverName = DB_HOST; //serverName\instanceName 
    $connectionInfo = array("Database"=>DB_NAME, "UID"=>DB_USER, "PWD"=>DB_PASSWORD); 
    $this->connection = sqlsrv_connect($serverName, $connectionInfo); 
    sqlsrv_connect($serverName, $connectionInfo); 


    if($this->connection) { 
     echo "<br>Connection established.<br />"; 
    }else{ 
     echo "<br>Connection could not be established.<br />"; 
     die(print_r(sqlsrv_errors(), true)); 
    }  


} 

建立的用於連接回聲是工作,所以所有AOK有!

現在,當我做了一個簡單的查詢:

function query($sql) { 
    if ($this->debug) { 
     echo $sql . "<br />"; 
    }  
    $this->sql = $sql; 
    $this->recordset = sqlsrv_query($this->connection, $sql); 

    if (!$this->recordset) { 
     die('<br><br>Invalid query :<br><br><bold>' . $this->sql . '</bold><br><br>' . sqlsrv_errors()); 
    } 

    echo "<br>rows = " . sqlsrv_num_rows($this->recordset); 

我從上面的回聲絕對沒有?任何理由?或者你可以建議一個新的回聲,我可以嘗試調試這個?

我的數據庫類中的所有代碼都是從mysql轉換而來的,因此可能會出現一些錯誤,它會造成破壞!

我甚至嘗試了一個超級簡單的版本,所有的代碼放在一起,它仍然空白/假:

$server = DB_HOST; 
$conn = sqlsrv_connect($server, array("Database"=>DB_NAME, "UID"=>DB_USER, "PWD"=>DB_PASSWORD)); 
$stmt = sqlsrv_query($conn, "SELECT * FROM MyTable"); 
$row_count = sqlsrv_num_rows($stmt); 
echo "<br>row count = " . $row_count; 
if ($row_count === false) 
    echo "\nerror\n"; 
else if ($row_count >=0) 
    echo "\n$row_count\n"; 
    die; 
+0

我們可以看到$ sql的內容? –

+2

對不起,我已經修復它,它需要$ options添加到查詢: 發現後立即發佈的答案! 在您的查詢代碼中,您需要此值: $ this-> sql = $ sql; \t \t $ params = array(); \t \t $ options = array(「Scrollable」=> SQLSRV_CURSOR_KEYSET); \t \t $ this-> recordset = sqlsrv_query($ this-> connection,$ sql,$ params,$ options); 「SQLSRV_CURSOR_KEYSET \t 允許您以任意順序訪問行。但是,鍵集遊標不更新,如果行從表(已刪除的行返回無值)刪除的行數。 鍵集是SQLSRV_CURSOR_KEYSET的縮寫形式。「 –

+1

隨時發佈自己的答案;-) – VolkerK

回答

14

試試這個.....

替換下面的語句

sqlsrv_query($conn, "SELECT * FROM MyTable"); 

sqlsrv_query($conn, "SELECT * FROM MyTable", array(), array("Scrollable"=>"buffered")); 
+2

必須要求一些解釋!它有助於更​​好地理解rapder比copypaste。 :) – SHAZ

相關問題