[英]How to get number of affected rows from a mssql query in php pdo
我正在將我的php項目從使用mysql更改為mssql。 當我使用if ($query->rowCount() == 0) {
與mysql它運行良好,但與mssql我得到一個負值,這是不正確的。 所以我試着使用$count = count($query->fetchAll());
使用mssql,它給我一個類似於使用mysql時的正值,但我得到一個錯誤我正在使用PHP服務器的SQL驅動程序
致命錯誤:未捕獲PDOException:SQLSTATE [IMSSP]:活動結果集中沒有其他行。 由於此結果集不可滾動,因此無法檢索更多數據。
需要一些幫助來解決這個問題
文檔清楚地說明了PDOStatement :: rowCount 。
返回添加,刪除或更改的行數。 如果關聯的PDOStatement執行的最后一個SQL語句是SELECT語句,則PDO :: CURSOR_FWDONLY游標返回-1。 PDO :: CURSOR_SCROLL ABLE游標返回結果集中的行數。
如果要對SELECT
語句使用rowCount()
,則需要使用PDO::CURSOR_SCROLLABLE
:
<?php
#
$server = "server\instance,port";
$dbname = "database";
$uid = "uid";
$pwd = "pwd";
# Connection
$conn = new PDO("sqlsrv:server=$server ; Database = $dbname", $uid, $pwd);
# SELECT statement
$query = "SELECT * FROM Table1";
$stmt = $conn->prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
$stmt->execute();
echo $stmt->rowCount();
# End
$stmt = null;
$conn = null;
?>
當你使用$count = count($query->fetchAll());
$query->fetchAll()
調用后,您的結果集已經被提取。 如果您嘗試調用PDOStatement::fetch
或PDOStatement::fetchAll
方法,則會出現此錯誤。
嘗試下一種方法:
<?php
...
$result = $query->fetchAll();
$count = count($result);
foreach ($result as $row) {
}
...
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.