나는 CM23 5YF 형식의 포스트 코드 1,755,213 개 항목이있는 데이터베이스를 가지고 있습니다. 나는 이것들을 CM235YF로 바꿔 공간을 제거하고 새로운 칼럼 (Wardcode)에서 점수를 매기기를 원한다. 내가하나의 쿼리로 큰 데이터베이스 업데이트
기능을 사용하고 어떤
표
우편 번호Wardcode, 여기
은이 방법으로 그것을 사용
//*** Select * from uk_data
function uk_pc_data($id){
global $host, $dbname, $user, $pass;
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$DBH->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); ///*** for error handling 165000
$STH = $DBH->query("SELECT * from uk_pc order by Postcode asc LIMIT $id, 50000");
$STH->setFetchMode(PDO::FETCH_ASSOC);
return $STH;
}
//*** Update Cat10 with Post code
function uk_pc_update_wardcode(){
global $host, $dbname, $user, $pass;
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$DBH->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$STH = $DBH->prepare("update uk_pc SET
Wardcode = :cat10
WHERE Postcode = :Postcode
");
$STH->bindValue(':Postcode' , $Postcode);
$STH->bindValue(':cat10' , $cat10);
return $STH;
}
있습니다
,
$q = $_GET['id'];
$STH1 = uk_pc_data($q);
while (($row = $STH1->fetch()) !== false) {
$pc_o = change_text(' ', '', $row['Postcode']);
$data_insert = array(':cat10'=>$pc_o , ':Postcode'=>$row['Postcode']);
$STH = uk_pc_update_wardcode();
$STH->execute($data_insert);
echo $pc_o .'<br>';
}
이것을 변경할 수있는 쉬운 방법이 있습니까? 내 스크립트가 작동하지만, 내가 사용할 수있는 다른 방법이 있는지 알고 싶습니다. 단 하나의 스크립트만으로이 모든 작업을 수행 할 수 있습니까?
매우 비효율적 인 ... 이러한 함수를 호출 할 때마다 db에 연결하지 마십시오. 그것은 5000 마일을 운전하여 목적지에서 1 페니를 땅에 떨어 뜨리는 것과 같습니다. 귀하의 기능을 벗어난 ** ** 한 발을 연결하십시오. –