2

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
}

この機能についてはこちらで読みました。上記の私のコードは、こちらの例とほぼ同じです。ADODB-PHP で影響を受ける行の数を取得する他の方法はありますか?

4

2 に答える 2

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

$this->_affectedRows =new VARIANT;

に:

$this->_affectedRows = null;

その後、 Affected_Rows() メソッドは実数を返すことができます。

于 2016-06-14T03:21:46.760 に答える