gpt4 book ai didi

带有 sqlsrv_num_rows 的 PHP

转载 作者:搜寻专家 更新时间:2023-10-31 20:51:33 24 4
gpt4 key购买 nike

我正在尝试执行 SQL Server 数据库查询,查看多对多关系。我将需要行的表与关系表链接起来,并插入唯一 ID,在本例中为 $guid。

查询有时是有功能的。它会工作,然后我只将 $guid 换成另一个 $guid,但它失败了,即使我盯着表格看它有与新 $guid 关联的值。

<?php
$guid = '{893C7BF8-E8C5-41D5-9C61-A72CF62DDBA8}';

// Connect to Database
$server = "#@#($#";
$connectionSettings = array("Database"=>"db", "UID"=>"user", "PWD"=>"pword");
$connection = sqlsrv_connect($server, $connectionSettings);

if (!$connection){
die("Failed Connection");
}

// Prepare and Execute Query
$sql = "SELECT *
FROM STREAMS.ATTACHMENTS a INNER JOIN STREAMS.RELATTACHMENTS ra
ON a.ROWGUID = ra.ATTACHMENT_GUID
WHERE ra.FEATURE_GUID = '" . $guid . "'";

$results = sqlsrv_query($connection, $sql);
$rowCount = sqlsrv_num_rows( $results );

if ($rowCount === false)
echo "failure";
else
echo $rowCount;

while($row = sqlsrv_fetch_array($results)){
echo "loop";
}
?>

更奇怪的是,这段代码的输出如下:

failurelooploop

这意味着 sqlsrv_num_rows 命令在结果中没有计算任何行...但它也意味着相同的结果集有 2 行,因为 while 循环绕过两次。

谁能解释一下这种奇怪的行为?

谢谢。

最佳答案

我敢打赌你有某种错误:如果出现问题,sqlsrv_num_rows 将返回 FALSE。您可以通过以下方式获取错误输出:

// probably don't want this in production.
print_r( sqlsrv_errors());

我猜原因与您的 guid 列有关,但我不能确定。 :-)

哦,除非您需要行数,否则不要使用它。使用 do...while 代替:

$row = sqlsrv_fetch_array($results);
if($row)
{
do{
echo "loop";
} while( $row = sqlsrv_fetch_array( $results ) );
}
else
{
// No results found
// you can output print_r( sqlsrv_errors() ); here
}

关于带有 sqlsrv_num_rows 的 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7032235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com