2009-06-26 4 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"を得るだけです。何か案は? –