반응형
원격 소스에서 데이터를 읽는 curl 스크립트가 있습니다. 다음은 현재 코드입니다.
function download_page($path){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$path);
curl_setopt($ch, CURLOPT_FAILONERROR,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$retValue = curl_exec($ch);
curl_close($ch);
return $retValue;
}
$sXML = download_page('http://remotepage.php&function=getItems&count=100&page=1');
$oXML = new SimpleXMLElement($sXML);
foreach($oXML->results->item->item as $oEntry){
$insert_query = mysql_query("INSERT INTO tbl_item (first_name, last_name, date_added) VALUES ('" . $oEntry->firstname . "', '" . $oEntry->lastname . "', '" . date("Y-m-d H:i:s") . "')");
}
그러나 스크립트는 각 개별 레코드를 작성하기 때문에 삽입하는 것이 매우 느립니다. count 변수는 각 페이지에 대해 반환되는 레코드 수이며 페이지 변수는 간단한 페이지 카운터입니다.
한 번에 100 개의 레코드를 모두 삽입하는 대량 삽입 문을 수행하는 방법이 있는지 궁금합니다.
미리 감사드립니다.
해결 방법
다음과 같이 하나의 명령문 내에서이를 수행 할 수 있습니다.
$sXML = download_page('http://remotepage.php&function=getItems&count=100&page=1');
$oXML = new SimpleXMLElement($sXML);
$query = "INSERT INTO tbl_item (first_name, last_name, date_added) VALUES";
foreach($oXML->results->item->item as $oEntry){
$query .= "('" . $oEntry->firstname . "', '" . $oEntry->lastname . "', '" . date("Y-m-d H:i:s") . "'),";
}
mysql_query($query);
참조 페이지 https://stackoverflow.com/questions/10615762
반응형
'MySql' 카테고리의 다른 글
MySQL mysql_ * API를 사용하여 MySQL에서 한 행 선택 (0) | 2021.02.10 |
---|---|
MySQL 여러 쿼리가있는 php / mysql (0) | 2021.02.10 |
MySQL INNER JOIN을 사용하여 한 번에 TWO TABLES에 대한 SQL INSERT 문 (0) | 2021.02.10 |
MySQL 저장 프로 시저 / 함수에서 여러 행을 반환하는 MySql (0) | 2021.02.10 |
MySQLi는 PHP에서 업데이트 문을 준비했습니다. (0) | 2021.02.10 |
댓글