我使用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
}
我在这里读过这个函数。我上面的代码与这里的示例几乎相同。在adodbphp中有没有其他方法可以获得受影响的行数?
3条答案
按热度按时间n3ipq98p1#
在许多情况下,作为执行方法的参数的受影响行并不能像您所希望的那样工作。
您应该尝试捕获ado事件,尤其是executecomplete事件
https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/executecomplete-event-ado?view=sql-server-ver15
w3nuxt5m2#
就为了马克。
您的代码:
是adodb sdk方法:http://adodb.org/dokuwiki/doku.php?id=v5:reference:connection:受影响的行
不是本机com(“adodb.connection”)方法。
但我也有同样的问题,因为这个方法返回“variant object”,所以我无法得到值。
我通过编辑sdk源文件adodb5/drivers/adodb-ado5.inc.php#44行修复了这个问题:
收件人:
然后,方法可以为我返回一个实数。
mm9b1k5b3#
关于
Affected_Rows()
,我不知道为什么它不起作用。在执行查询之后,还有另一种非常简单的方法来获取受影响的行数。