我有以下SELECT语句,它在SQL Server查询工具上“正常工作”并返回行。但是,当我在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语句中改变什么?
答案 0 :(得分:0)
您应该将相同的运算符(===)更改为等于运算符(==)。 您的$行实际上应该包含值,您可以通过执行
来测试它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'
为真(忽略变量类型)
我希望这会有所帮助。