【问题标题】:PHP - Get affected rows in ADODBPHP - 在 ADODB 中获取受影响的行
【发布时间】:2019-05-23 13:37:48
【问题描述】:

我使用 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 中受影响的行数?

【问题讨论】:

    标签: php adodb-php


    【解决方案1】:

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

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

    $affected_rows 从 Execute 函数返回的值将等于该查询的受影响行数。

    【讨论】:

      【解决方案2】:

      只是为了标记。

      你的代码:

      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 行:

      $this->_affectedRows =new VARIANT;
      

      到:

      $this->_affectedRows = null;
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-13
        • 2011-10-03
        • 2012-04-20
        • 2019-02-19
        • 2011-06-11
        相关资源
        最近更新 更多