PHP - 在ADODB中获取受影响的行

时间:2015-06-25 10:48:19

标签: php adodb-php

我使用ADODB创建与数据库的连接。我更新了数据库中的数据,没有错误。问题是我无法通过Affected_Rows()获得受影响的行数。我尝试使用非常简单的代码,但它不起作用。这是我的代码:

$sql = "UPDATE User SET Name=N'MyName' WHERE Id=1";
$conn = new COM ("ADODB.Connection") or die("Cannot start ADO");
$cs = "provider=sqloledb;"."server=localhost;database=Test;uid=Admin;pwd=123456;Max Pool Size=100";
$conn->open($cs);

//there is no error in connecting process. I can add, update, delete normally.
if($conn->Execute($sql) === false)
{
    trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn->ErrorMsg(), E_USER_ERROR);
}
else 
{
    echo $conn->Affected_Rows();  //<-- Error in here
}

我已在here中了解此功能。我上面的代码与示例here几乎相同。 有没有其他方法可以获得ADODB-PHP中受影响的行数?

2 个答案:

答案 0 :(得分:3)

关于Affected_Rows(),我不知道为什么它不起作用。 在执行查询之后,还有另一种非常简单的方法可以获取受影响的行数。

$conn->Execute($sql,$affected_rows);

echo $affected_rows;
从Execute函数返回的

$affected_rows的值将等于该查询的受影响行数。

答案 1 :(得分:1)

只是为了标记。

您的代码:

echo $conn->Affected_Rows()

是ADODB SDK方法:http://adodb.org/dokuwiki/doku.php?id=v5:reference:connection:affected_rows

不是本机COM(“ADODB.connection”)方法。

但我有同样的问题,因为这个方法返回“变体对象”,所以我无法得到值。

我通过编辑SDK源文件解决了这个问题:adodb5 / drivers / adodb-ado5.inc.php#44 line:

$this->_affectedRows =new VARIANT;

为:

$this->_affectedRows = null;

然后Affected_Rows()方法可以为我返回一个实数。