簡體   English   中英

帶有sqlsrv_query的SELECT語句未返回結果

[英]SELECT statement with sqlsrv_query not returning results

我在SQL Server查詢工具上有以下正在運行的SELECT語句,並返回行。 但是,當我在PHP上運行它時,它不返回任何行。 我知道連接和設置的工作方式就像創建一個簡單的查詢(例如“ SELECT * from ...”)一樣有效。 這是我的代碼。

$tsql = "SELECT  [d].[Device_Type_Name],
           [a].[Company_ID] AS [Alliance],
           [a].[Device_Address]
           FROM [dbo].[AL_LKP_User_Device] AS [a]
           INNER JOIN [dbo].[AL_LKP_User] AS [b]
           ON [a].[Login_ID] = [b].[Login_ID]
           INNER JOIN [dbo].[AL_LKP_NOTIFICATION_MASTER_LOG] AS [c]
           ON [b].[Login_ID] = [c].[Login_ID]
           INNER JOIN [dbo].[AL_LKP_Device_Type] AS [d]
           ON [a].[Device_Type_ID] = [d].[Device_Type_ID]";

$stmt = sqlsrv_query( $conn, $tsql);
    if( !$stmt )
    {
        die( print_r( sqlsrv_errors(), true));
    }

    $rows = sqlsrv_has_rows($stmt);
     if ($rows === true)
          echo "There are rows. <br />";
       else
      echo "There are no rows. <br />";

當實際上有行時,我不斷得到行。 我需要在SQL語句中進行任何更改嗎?

您應該將相同的運算符(===)更改為相等的運算符(==)。 $ rows實際上應該包含值,您可以通過執行以下操作來測試

print_r($rows) 

要么

vardump($rows)

我測試了這個:

$rows = array(1=>"a",2=>"b");
if ($rows === true)
echo "There are rows. <br />";
else
echo "There are no rows. <br />";

這的確會返回“沒有行”,但是如果將“ ===”更改為“ ==”,則應該得到“有行”的答案。

1 == 1是true 1 === '1'不是true(左val是整數,另一個是字符串) 1 == '1'是true(忽略變量類型)

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM