>  기사  >  백엔드 개발  >  PHP에서 한 번에 많은 양의 데이터를 데이터베이스에 기록하는 문제를 해결하는 방법

PHP에서 한 번에 많은 양의 데이터를 데이터베이스에 기록하는 문제를 해결하는 방법

小云云
小云云원래의
2018-03-15 09:10:511796검색

데이터베이스의 삽입을 일괄적으로 업데이트할 수 있으며, 주기적으로 삽입되는 데이터의 양이 많을 경우 삽입 명령을 실행하지 않고도 데이터를 유지할 수 있으며 addAll과 같이 마지막 항목을 한 번에 삽입할 수 있습니다. () method of tp;

데이터베이스 업데이트 경우에 따라 일괄 업데이트도 가능합니다. 이 글에서는 주로 데이터 업데이트에 사용되는 TP 기반의 saveAll() 메소드를 찾았습니다. 일반적인 설명은 다음과 같습니다.

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 'Onions' 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.