1

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ステートメントで変更する必要があるものはありますか??

4

1 に答える 1

0

同一演算子 (===) を等号演算子 (==) に変更する必要があります。$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真である 真 1 === '1'ではない (左の val は整数で、もう一方は文字列 1 == '1'です) 真です (変数の型は無視されます)

これが役立つことを願っています。

于 2013-07-17T09:50:12.547 に答える