0 レビュー
0 回答
php-PDOトランザクションで影響を受けるレコードの数
非常に基本的なPDOトランザクションを実行するスクリプトがあり、それは機能します(レコードを選択し、それらの結果に基づいてマージを実行します)
つまり、正常に挿入/更新されますが、正確なレコードの数を取得しようとしていますが、機能しません。PowerShellで1を返すだけです。
空のデータベーステーブルから開始してこのスクリプトを実行すると、1300レコードが正常に挿入されますが、 $count
は「1」を出力します。
スクリプトの実行時に、電子メールの目的でレコード数、成功メッセージ、およびエラーを取得しようとしているだけです。何か足りないのですか?
while($ arr = odbc_fetch_array($ result)){
$ stmt = $ PDO-> prepare( "
SとしてORDER_STATUSにマージ
USING(VALUES(
CAST(:ORDER_ID as INT)、
CAST(:ORDER_STATUS as VARCHAR(45))、
CAST(:is_active as DECIMAL(1,0))、
CAST(:DATE_UPDATED as DATE)
)。
)。
AS O(order_id、order_status、is_active、date_updated)
ON O.order_id = S.order_id
一致してから更新する場合order_status=O.order_status、is_active = O.is_active、date_updated = O.date_updated
一致しない場合はINSERT(order_id、order_status、is_active、date_updated)VALUES(O.order_id、O.order_status、O.is_active、O.date_updated)
");
$ PDO-> beginTransaction();
$ i = 0;
while($ db2row = odbc_fetch_array($ result)){
if(++ $ i%1000 == 0){
$ PDO-> commit();
$ PDO-> beginTransaction();
}
$ stmt-> execute($ db2row);
}
$ PDO-> commit();
$count = $ stmt-> rowCount();
print_r($count);
}
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。