我有以下代碼:PHP MSSQL舉止怪異有不同的語句
$stmt = sqlsrv_query($conn, $sql, $params);
$stmtForCounting = $stmt;
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)){
*table creation code*
}
到目前爲止,它的工作原理,但是當我加了一下它,所以它看起來是這樣的:
$stmt = sqlsrv_query($conn, $sql, $params);
$stmtForCounting = $stmt;
while (sqlsrv_fetch($stmtForCounting)){
}
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)){
*table creation code*
}
的$stmt
變量變空。使用sqlsrv_fetch($stmtForCounting)
應該不會影響$stmt
,對不對?
(原代碼較長,但我剝離下來到這個試圖隔離問題。)
編輯:這不是空因爲var_dump($stmt)
還稱resource(9, SQL Server Statement)
但在創建表的while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)){*more code*}
部分甚至不會運行一次。
「相同的資源」=結果集/當前行的指針。複製語句對象只是複製該指針,因此它們都指向相同的結果集,並且第一次耗盡。 - 啊,評論已被刪除,所以現在我們其他人都在跟自己說話。 –
對不起,刪除了我的第一條評論,我不應該這樣做,因爲這是以後任何人看到這篇文章的時候:不應該'$ stmt = $ stmtForCounting'導致2個獨立的語句變量? – gergalyb
查看@underscore_d的回答和我的編輯。 – stef77