ホームページ >バックエンド開発 >PHPチュートリアル >PHP で一度に大量のデータをデータベースに記録する問題を解決する方法

PHP で一度に大量のデータをデータベースに記録する問題を解決する方法

小云云
小云云オリジナル
2018-03-15 09:10:511842ブラウズ

大量のデータが周期的に挿入される場合、挿入コマンドを実行せずにデータを保持し、addAllのように最後の項目を一括で挿入することができます。 tp の () メソッド

case when を使用すると、バッチで更新することもできます。この記事では、主にデータを更新するために使用されます。バッチ挿入について説明します。 通常のステートメントは次のとおりです。

INSERT INTO order (`goods_id`,`num`,`price`) VALUES (1,1,'10.00');
//封装成函数
function add_order($goods_id,$num,$price){
$db->query("INSERT INTO order (`goods_id`,`num`,`price`) VALUES ($goods_id,$num,$price)");
}

ショッピング カート内の 1,000 個の商品を一度に決済し、1,000 個の注文を生成すると仮定します。バッチ更新を実装するのはさらに面倒なので、これ以上投稿する必要はありません。以下はバッチ更新の SQL 実行ステートメントです

UPDATE tiyan.dm_user_cupboard SET `res_id` = CASE `id` WHEN 1041 THEN '1' WHEN 1058 THEN '1' WHEN 1055 THEN '1' END,`food_code` = CASE `id` WHEN 1041 THEN '68' WHEN 1058 THEN '47' WHEN 1055 THEEN '49' END,`food_name` = CASE `id` WHEN 1041 THEN '赤い日付' WHEN 1058 THEN 'レンコン' WHEN 1055 THEN '玉ねぎ ' END,`num` = CASE `id` WHEN 1041 THEN '2' WHEN 1058 THEN '3' WHEN 1055 THEN '2' END,`level` = CASE `id ` WHEN 1041 THEN '2' WHEN 1058 THEN '2 ' WHEN 1055 THEN '2' END,`update_time` = CASE `id` WHEN 1041 THEN '2017-12-09 21:40:06' WHEN 1058 THEN '2017- 12-09 21:40:06' WHEN 1055 THEN '2017-12-09 21:40:06' END WHERE id IN ( 1041,1058,1055 )

tp ベースの saveAll() が付属しています

for ($i=0;$i<1000;$i++){
$db->query("INSERT INTO order (`goods_id`,`num`,`price`) VALUES ($goods_id,$num,$price)");
}
//这样的话会导致服务器资源占用过大,网站卡死
//所以,我们可以
$sql = "INSERT INTO order (`goods_id`,`num`,`price`) VALUES ";
for ($i=0;$i<1000;$i++){
    if($i==0){
    $sql.="($goods_id,$num,$price)";
    }else{
    $sql.=",($goods_id,$num,$price)";
    }
}
$db->query($sql);

関連する推奨事項:

phpデータをデータベースにクリーンアップする前にphp intvalに注意してください mysql_PHPチュートリアルのint値の範囲とは異なります

PHPに基づいた簡単なデータ収集とウェアハウスプログラムの詳細な説明

シンプルなデータ収集とウェアハウスPHP ベースのプログラム、php コレクション、warehousing_PHP チュートリアル

以上がPHP で一度に大量のデータをデータベースに記録する問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。