안녕하세요 2 mysql 테이블이 있고 둘 다 업데이트해야합니다.Mysql PHP 스크립트는 리팩터링을 필요로합니다.
companies
unique_code
회사는 1 백만 레코드를 보유하고 있으며 각각 고유 한 코드를 필요로합니다. 문제는 PHP 스크립트를 모든 회사에서 가져 오는 것입니다. foreach 루프는 unique_code 테이블에서 유니 코드 코드를 가져 와서 업데이트하고 unique_code 테이블을 업데이트하여 사용 된 코드에 플래그를 지정합니다.
PHP 코드는 오래 동안 멈추고 최대 실행 제한에 도달합니다. 나는 정말로 붙어있어서이 회사들에게 고유 한 코드를 필요로합니다. 다른 접근 방식을 생각할 수 있습니까?
코드 예제를 잘랐습니다.
foreach ($aCompanies as $companies){
$query="SELECT * FROM unique_code WHERE used = 0"
foreach(unique_code as code){
// UPdate companies table
$query = "UPDATE companies SET id = $code";
// Flag code used
$query = "UPDATE unique_codes WHERE code = $code";
}
}
시간을내어 건배.
전체 코드 :
$query1 = "SELECT code FROM unique_codes WHERE used = 0\n";
$aUniqueCode = $oDbh->getAll($query1);
$query2 = "SELECT id FROM companies";
$aCompanies = $oDbh->getAll($query2);
foreach ($aCompanies as $companies){
$query = "SELECT code FROM unique_codes WHERE used = '0' LIMIT 1";
$oCode = $oDbh->getRow($query);
$query3.= "UPDATE companies SET code = $oCode->code WHERE id = $companies->id\n";
$query4 = "UPDATE unique_codes SET used = '1' WHERE code = $oCode->code\n";
$oDbh->query($query4);
}
print print_r($query3).';';
exit;
내가하고있는 일은 모든 SQL을 파일로 내보내는 회사를 업데이트하지 않기 때문에 나중에 가져올 수 있습니다.
사용중인 MySQL 버전은 무엇입니까? 당신은 이것을 위해 방아쇠를 사용하는 것을 고려 했습니까? –
MySql 버전 4, 나는 기술적 인 방아쇠를 알지 못합니다. –
더 완벽한 코드 예제를 제공 할 수 있습니까? 어디에서'$ companies'와'UPDATE unique_codes WHERE code = $ code'를 사용하면 아무 것도하지 않습니다. –