2009-06-26 9 views
0

여기에서 성취하려고하는 것은 firstname, lastname 콤보를 데이터베이스에 저장하도록 분리하는 것입니다. 이름과 성을 보유하기 위해 이미 데이터베이스에 새 열을 추가했습니다. 지금해야 할 일은 실제로 이들을 분리하고 변경 사항에 대해 SQL 업데이트를 실행하는 것입니다.PHP 의존 foreach 루프

나를 도와 줄 수 있습니까? 감사.

여기에 내 코드

<?php 
$link = mysql_connect('localhost', 'root', ''); 
mysql_select_db("test",$link); 

$sql = "SELECT * FROM new_users"; 
$result = mysql_query($sql); 

while ($row = mysql_fetch_assoc($result)) 
{ 
    $foo[] = $row; 
} 

foreach($foo as $name) 
{ 
    $_name[] = explode(',',$name['Name']); 
    $_pan[] = $name['PANumber']; 
} 

foreach($_pan as $pan) 
{ 
    foreach($_name as $name) 
    { 
     echo'<pre>'; 
     print_r($pan); 
     echo'</pre>'; 
    } 
} 

답변

5

나는 당신의 질문을 이해 해요 경우, "이름, 성"인 이름 열있어 그리고 당신은 첫 번째와 마지막 열로 대체합니다.

SQL의 문자열 조작은 아마 가장 쉬운 방법입니다 :

UPDATE new_users SET First=SUBSTRING_INDEX(Name, ",", 1), Last=SUBSTRING_INDEX(Name, ",", -1)

... 다음, 당신은 옳은 일했다 확신 후 :에 어떤 일이 같은

ALTER TABLE new_users DROP Name

+0

+1 - 나는 당신의 대답이 내 것보다 낫다. 가능한 한 데이터베이스에서 그것을 모두하는 것이 가장 좋다. –

+0

그래, 이거 훨씬 깨끗해. 나는 폭발을 사용하고 있었다. 나는 이것을 지금 시도 할 것이다. 도움을 주셔서 감사합니다 –

+0

난 조금 혼란스러워 Gavin .. PHP foreach 루프, 바로 안에 SQL 문을 캡슐화해야합니까? –

0

뭔가 (여기서 PANumber는 기본 키라고 가정합니다.) :

foreach($foo as $name) 
{ 
    $_name[] = explode(',',$name['Name']); 
    $_pan = $name['PANumber']; 

    $sql = "UPDATE new_users SET " . 
      "FirstName = '" . $_name[0] . "' " . 
      "LastName = '" . $_name[1] . "' " . 
      "WHERE PANumber = '" . $_pan; 

    mysql_query($sql); 
} 
+0

에릭, 도움 주셔서 감사합니다. 불행히도, 필자는 이전에 가지고 있던 변수를 반향시킬 때 $ _name 변수에 대해서만 "Array"를 얻습니다. 어떤 아이디어? –