web-dev-qa-db-ja.com

WordpressのdbDelta()関数から影響を受ける行数を取得する方法

データベースに非常に多くの行をインポートするためにdbDaltaを使用しています。これで、すべての行の挿入、影響を受けた行数、およびインポートに失敗した行数を正常にチェックしたいと思います。

私のコード:

$beginQuery = "INSERT INTO ".$wpdb->prefix."table_name(pzipcode, Zip_class, pcity, pstate, lattitude, longitude, pcountry, pstatus, ptime, id) VALUES ";

$zips  = array(
  array('pzipcode' => 'AB10','latitude' => '57.13514','longitude' => '-2.11731','pcity' => 'Aberdeen','pstate' => 'Scotland','pcountry' => 'SCT'),
  array('pzipcode' => 'AB11','latitude' => '57.13875','longitude' => '-2.09089','pcity' => 'Aberdeen','pstate' => 'Scotland','pcountry' => 'SCT'),
// ...................................
// ...................................
);

foreach($zips as $Zip) {
     //$beginQuery.' ('.$Zip['zp'].',"'.$Zip['ct'].'","'.$Zip['st'].'","United States",1,"'.current_time('mysql', 1).'")';
    $zipCodeDumper = dbDelta($beginQuery.' ("'.$Zip['pzipcode'].'","'.$Zip['Zip_class'].'","'.$Zip['pcity'].'","'.$Zip['pstate'].'","'.$Zip['lattitude'].'","'.$Zip['longitude'].'","'.$Zip['pcountry'].'","'.$Zip['pstatus'].'","'.$Zip['ptime'].'","'.$Zip['id'].'")');
    //break;
  }
  if (!$zipCodeDumper) {
    echo "Successfully Imported all Zipcode/postcode.";
  }else{
    echo "Something was wrong!!! Please Try again";
  }
1
Shapon Pal

dbDelta()は、新しいテーブルを作成したり、既存のテーブルの(データではなく)構造を変更するためのものです。

データを挿入したいときは$wpdb->insert( $tablename, $zips );が必要です。それ故に名前。 :)

そして、このメソッドは影響を受けた行の数を、必要に応じて正確に返します。それがfalseを返す場合は、$wpdb->last_errorを見て、何が正確にうまくいかなかったかを確かめてください。

2
fuxia