2014-09-18 62 views
0

我得到這個錯誤,請嘗試解決,但不能發現問題:PHP錯誤sqlsrv_fetch_array()

ERROR「警告:sqlsrv_fetch_array()預計參數1是資源,布爾在C中給出:\ XAMPP \ htdocs中\ test3.php上線14

來源:

<?php 

    $serverName ="12.10.12.120"; $usr="myuser"; $pwd="myuser1"; 
    $db="Mydabb"; 

    $connectionInfo = array("UID" => $usr, "PWD" => $pwd, "Database" => 
    $db); 

    $conn = sqlsrv_connect($serverName, $connectionInfo); 

    $sql = "SELECT Name, Address, Amount FROM Order "; $res = 
    sqlsrv_query($conn, $sql); while ($row = sqlsrv_fetch_array($res)) 
    { 
     print($row['Name'].",".$row['Address'].",".$row['Amount']); } 

    ?> 

任何幫助將不勝感激

+0

後'sqlsrv_query'加上'如果($水庫!)死亡(的print_r(sqlsrv_errors(),TRUE));' – 2014-09-18 23:51:29

+0

'ORDER'是一個SQL保留字。使用'[ORDER]'(編輯)。 – 2014-09-18 23:54:02

+0

@ Fred-ii-它是MS SQL,而不是MySQL,在MS SQL中,您應該使用'['而不是反引號' – 2014-09-18 23:56:49

回答

0

查詢本身可能存在問題,因爲函數sqlsrv_query在錯誤上返回布爾值。

從文檔:

http://php.net/manual/en/function.sqlsrv-fetch-array.php

我們看到,取數組的例子首先檢查sqlsrv_query的返回值之前等於假的,如果是那麼它會打印錯誤與sqlsrv_errors函數並退出。

您將需要實現該功能,以查看錯誤是什麼,以便進一步調試。

<?php 

    $serverName ="12.10.12.120"; $usr="myuser"; $pwd="myuser1"; 
    $db="Mydabb"; 

    $connectionInfo = array("UID" => $usr, "PWD" => $pwd, "Database" => 
    $db); 

    $conn = sqlsrv_connect($serverName, $connectionInfo); 

    $sql = "SELECT Name, Address, Amount FROM Order "; 

    $res = sqlsrv_query($conn, $sql); 

    if($res === false) { 
    die(print_r(sqlsrv_errors(), true)); 
    } 

    while ($row = sqlsrv_fetch_array($res)) 
    { 
     print($row['Name'].",".$row['Address'].",".$row['Amount']); } 

    ?> 
1

ORDER是SQL和MSSQL reserved word和必須包裝在方括號中。

改變這一行

$sql = "SELECT Name, Address, Amount FROM Order "; 

$sql = "SELECT Name, Address, Amount FROM [Order] "; 

或爲它改名換姓,以 「訂單」 如果可能的話。

您應該啓用錯誤報告,如果會發出錯誤信號。


正如評論所說,將

if (!$res) die(print_r(sqlsrv_errors(), true)); 

sqlsrv_query