データベースに非常に多くの行をインポートするために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";
}
dbDelta()
は、新しいテーブルを作成したり、既存のテーブルの(データではなく)構造を変更するためのものです。
データを挿入したいときは$wpdb->insert( $tablename, $zips );
が必要です。それ故に名前。 :)
そして、このメソッドは影響を受けた行の数を、必要に応じて正確に返します。それがfalse
を返す場合は、$wpdb->last_error
を見て、何が正確にうまくいかなかったかを確かめてください。