如何从 php pdo 中的 mssql 查询中获取受影响的行数
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 drivers for sql server
Fatal error: Uncaught PDOException: SQLSTATE[IMSSP]: There are no more rows in the active result set. Since this result set is not scrollable, no more data may be retrieved.
在这个问题上需要一些帮助
文档清楚 PDOStatement::rowCount。
Returns the number of rows added, deleted, or changed. If the last SQL
statement executed by the associated PDOStatement was a SELECT
statement, a PDO::CURSOR_FWDONLY cursor returns -1. A
PDO::CURSOR_SCROLL ABLE cursor returns the number of rows in the
result set.
如果要对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) {
}
...
?>
我正在将我的 php 项目从使用 mysql 更改为 mssql。
当我使用
if ($query->rowCount() == 0) {
和 mysql 效果很好,但是对于 mssql 我得到一个不正确的负值。
所以我尝试将 $count = count($query->fetchAll());
与 mssql 一起使用,这给了我一个类似于使用 mysql 时的正值,但我得到了一个错误
我正在使用 Php drivers for sql server
Fatal error: Uncaught PDOException: SQLSTATE[IMSSP]: There are no more rows in the active result set. Since this result set is not scrollable, no more data may be retrieved.
在这个问题上需要一些帮助
文档清楚 PDOStatement::rowCount。
Returns the number of rows added, deleted, or changed. If the last SQL statement executed by the associated PDOStatement was a SELECT statement, a PDO::CURSOR_FWDONLY cursor returns -1. A PDO::CURSOR_SCROLL ABLE cursor returns the number of rows in the result set.
如果要对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) {
}
...
?>