【发布时间】:2019-06-13 10:39:55
【问题描述】:
我将加入主题 - 我有一个 sql 查询:
SELECT a.tw_Nazwa, c.st_Stan, d.zd_Glowne , d.zd_Zdjecie, a.tw_Id, a.tw_Symbol,e.cht_IdCecha,b.tc_CenaNetto1,b.tc_CenaBrutto1
FROM tw__Towar a
LEFT JOIN tw_CechaTw e ON a.tw_Id = e.cht_IdTowar
LEFT JOIN tw_Cena b ON a.tw_Id = b.tc_IdTowar
LEFT JOIN tw_Stan c ON b.tc_IdTowar=c.st_TowId
LEFT JOIN tw_ZdjecieTw d ON d.zd_IdTowar=c.st_TowId
WHERE tw_SklepInternet = 1 AND st_MagId = 1
这个查询应该有 261 个结果,如果它是由 Dbeaver 程序对数据库完成的,这就是它所需要的。
使用:
$getResults = sqlsrv_query($conn1, $Query);
if( $getResults === false ) {
die( print_r( sqlsrv_errors(), true) );
}
和
while ($row = sqlsrv_fetch_array($getResults, SQLSRV_FETCH_ASSOC)) {
//blablabla
$i++;
}
print $i //is showing only 12 results
这是可行的,但不是解决方案:
for($i=0;$i<=260;$i++){
$row = sqlsrv_fetch_array($getResults, SQLSRV_FETCH_ASSOC)
//blablabla
$i++;
}
获取数组时出错。
Array
(
[0] => Array
(
[0] => IMSSP
[SQLSTATE] => IMSSP
[1] => -22
[code] => -22
[2] => There are no more rows in the active result set. Since this result set is not scrollable, no more data may be retrieved.
[message] => There are no more rows in the active result set. Since this result set is not scrollable, no more data may be retrieved.
)
)
错误在哪里以及如何解决。
【问题讨论】:
-
好像有空行——如何避免它继续使用while循环
-
使用
$row_count = sqlsrv_num_rows( $getResults );并在for()中使用$row_count而不是硬编码的260 -
@spamfilter 如果
while ($row = sqlsrv_fetch_array($getResults, SQLSRV_FETCH_ASSOC)) {$i++;}返回12行并且您期望261,请检查您是否在同一个数据库中执行您的两个语句。 -
with $params = array(); $options = array( "可滚动" => SQLSRV_CURSOR_KEYSET );运行良好 - 这对我来说是解决方案,好的 thx
标签: php sql sql-server