0

正常に実行されているmysqlON DUPLICATE KEY UPDATEステートメントがあります。

マニュアルには、挿入された行の影響を受ける行は1、更新された行は2と記載されていますが、次のようにするだけで挿入された行の数を計算できると思いました。

$i = count($insert); // the insert array
// execute the query here
$inserted = ($i * 2) - $q -> rowCount();

に等しい方程式は$inserted、挿入された行の数を返します(mysqlによる)。

私のラップトップではwampを実行していますが、重複する値のみを挿入すると、行数が0になります。なぜこれができるのでしょうか?

ありがとう

4

1 に答える 1

2

このrowCount()関数は、更新または挿入を示す 1 または 2 のみを返します。ON DUPLICATE KEY UPDATE複数の挿入/更新を行う場合、影響を受けた行の数を知ることを忘れる手段を使用します。

あなたのインスタンスでは、同じ値で更新すると戻り値が 0 (つまり、変更なし) になるため、行数が 0 になっている可能性があります。PHPマニュアルのコメントは、PDO属性PDO::MYSQL_ATTR_FOUND_ROWSをtrueに追加して、更新クエリが実際に見つけた/一致した行数を取得できることを示唆しています。

例えば

$p = new PDO($dsn, $u, $p, array(PDO::MYSQL_ATTR_FOUND_ROWS => true));
于 2012-06-18T02:23:52.187 に答える