2014-06-05 2 views
0

데이터베이스의 필드 (전화 번호)를 새로운 형식으로 업데이트해야합니다. mysql을 사용하여이 작업을 수행 할 수 있지만, 감가 상각 된 것으로 보아도 mysqli를 사용하여 여러 필드를 업데이트하는 데 도움이되는 정보가 있으면 궁금하다. 숫자 포맷터에 대한 숫자 코드는 다음과 같습니다PHP로 복수 필드 업데이트하기 (MySQL)

function formatPhoneNumber($phoneNumber) { 
    $phoneNumber = preg_replace('/[^0-9]/','',$phoneNumber); 

    if(strlen($phoneNumber) > 10) { 
     $countryCode = substr($phoneNumber, 0, strlen($phoneNumber)-10); 
     $areaCode = substr($phoneNumber, -10, 3); 
     $nextThree = substr($phoneNumber, -7, 3); 
     $lastFour = substr($phoneNumber, -4, 4); 

     $phoneNumber = '+'.$countryCode.' ('.$areaCode.') '.$nextThree.'-'.$lastFour; 
    } 
    else if(strlen($phoneNumber) == 10) { 
     $areaCode = substr($phoneNumber, 0, 3); 
     $nextThree = substr($phoneNumber, 3, 3); 
     $lastFour = substr($phoneNumber, 6, 4); 

     $phoneNumber = '('.$areaCode.') '.$nextThree.'-'.$lastFour; 
    } 
    else if(strlen($phoneNumber) == 7) { 
     $nextThree = substr($phoneNumber, 0, 3); 
     $lastFour = substr($phoneNumber, 3, 4); 

     $phoneNumber = $nextThree.'-'.$lastFour; 
    } 

    return $phoneNumber; 
} 

그리고 쿼리는 SELECT customers_id, customers_telephone FROM customers WHERE customers_telephone NOT IN (' ')가 영향을 20,000 행에 근접있을 것이다 것,이 작업을 수행하는 가장 효율적인 방법은 무엇입니까? 루프

은 다음과 같다,하지만 단지 배열의 첫 번째 고객을하고있다 :

foreach($customers as $row) 
{ 
    $customer_id = $row['customers_id']; 
    $numbers_array = $row['customers_telephone']; 
    function formatPhoneNumber($phoneNumber) { 
    $phoneNumber = preg_replace('/[^0-9]/','',$phoneNumber); 

    if(strlen($phoneNumber) > 10) { 
     $countryCode = substr($phoneNumber, 0, strlen($phoneNumber)-10); 
     $areaCode = substr($phoneNumber, -10, 3); 
     $nextThree = substr($phoneNumber, -7, 3); 
     $lastFour = substr($phoneNumber, -4, 4); 

     $phoneNumber = '+'.$countryCode.'-'.$areaCode.'- '.$nextThree.'-'.$lastFour; 
    } 
    else if(strlen($phoneNumber) == 10) { 
     $areaCode = substr($phoneNumber, 0, 3); 
     $nextThree = substr($phoneNumber, 3, 3); 
     $lastFour = substr($phoneNumber, 6, 4); 

     $phoneNumber = $areaCode.'- '.$nextThree.'-'.$lastFour; 
    } 
    else if(strlen($phoneNumber) == 7) { 
     $nextThree = substr($phoneNumber, 0, 3); 
     $lastFour = substr($phoneNumber, 3, 4); 

     $phoneNumber = $nextThree.'-'.$lastFour; 
    } 

    return $phoneNumber; 
} 
    formatPhoneNumber($numbers_array); 
    echo $numbers_array." - ".$customer_id; 

} 
+0

. 2) for 루프를 사용하여 모든 숫자를 함수에 넣고 새로운 형식 배열에 넣습니다. 3) 각 항목에 대한 갱신 조회를 실행하십시오. – Brobin

+0

@Brobin 원래 질문을 업데이트했지만 첫 번째 행만 수행했는데 문제가 무엇인지 보시겠습니까? – will

+0

루프에서이 기능을 사용할 수 없습니다. 루프 내에서 호출해야합니다. @ 스캇 손더스의 대답을보세요. – Brobin

답변

0
는 루프에서 함수를 이동

.

그런 다음 마지막 두 줄을 변경 : I는 1) 현재 형식으로 전화 번호를 모두 얻을 수 및 배열에 넣어하는 선택을 사용

$formattedNumber = formatPhoneNumber($numbers_array); 
echo $formattedNumber . " - " . $customer_id;