我正在研究一些PHP的东西,我试图使用sqlsrv_fetch_array()来返回一组结果。我注意到,如果查询在管理工作室中返回x结果,则返回(x-1)结果为实际的PHP查询。
当我搜索单个内容时,这成为一个真正的问题,它什么都不返回。
代码如下:
function sqe($colname, $aq = NULL, $init = NULL)
{
global $connection;
$q = "SELECT TOP 2 * FROM tblname WHERE colname='" . $colName . "' ORDER BY colname DESC";
$statement = sqlsrv_query($connection, $q);
if (sqlsrv_fetch_array($statement) === false) {
echo "Error fetching...";
die(print_r(sqlsrv_errors(), true));
} else {
$source = "";
echo $q;
while ($row = sqlsrv_fetch_array($statement, SQLSRV_FETCH_ASSOC)){
$source .= "<li><img src='data:image/png;base64," . $row['rowname'] . "' /></li>";
}
echo ($source);
sqlsrv_free_stmt($statement);
die();
}
}
我认为问题在于while循环,但我不确定实际上导致它返回1的程度是什么。
有什么想法吗?
答案 0 :(得分:1)
你的if语句检查sqlsrv_fetch_array($statement)
是否为false,但是调用该方法会使内部游标前进,使得while循环以 second 行而不是第一行开始。
要查看查询是失败还是未返回任何行,您可以将$statement
与false进行比较并同时调用sqlsrv_has_rows
。
if ($statement === false || !sqlsrv_has_rows($statement)) {
// Either the query returned an error or no matches were found in the database
}