2011-10-19 12 views
0

私は2つのPHP変数、両方の文字列を持っている:MySQLデータベース内の複数の配列の値を挿入

$friendslist = "2323443,7245,284683,345123,8456234,95432" 

$id = "10288272"; 

以下の通りであると私に関するテーブルの構造:

テーブル名:UserLinksを

link_id user_1 user_2 

user_1が常に$ idで、user_2が$ friendslist文字列のメンバーになるように、これらの値をテーブルに挿入する必要があります。それは次のようになります。

link_id user_1 user_2 
1   10288272 2323443 
2   10288272 7245 
3   10288272 284683 
4   10288272 345123 

を、私はこの原因で、私が使用する多くの値を、挿入の基本を知っている:

mysql_query("INSERT INTO UserLinks (User_1, User_2) VALUES ('10288272','2323443'),('10288272','7245'),('10288272','284683')"); 

しかし、私はこれを書くことのために考えることができる唯一の方法は(これらの値は明らかに挿入され、実際の値ではありませんように)このようなものです:文字列に$のfrienduserarrayを変換した後、私のクエリでそれを含め続く

$friendarray = explode(",", $friendslist); 

for ($n = 0; $n < count($friendarray); $n++) { 
     $friendidpush = "('".$id."','".$friendarray[$n]."'),"; 
     array_push($frienduserarray, $friendidpush); 
} 

。これは私のために誤りを返しました、そして、私はこれが正しい方法だとは思わない...しかし、私は解決策をオンラインで見つけるのに苦労しています。

+1

エラーが何であるように見えるでしょうか? – xdazz

+0

警告:array_push()最初の引数は配列 – TaylorMac

+0

でなければなりませんが、これが良い方法であるかどうかはわかりません:/ – TaylorMac

答えて

3

を入力すると、配列として$frienduserarrayが初期化されないため、array_pushは機能しません。

$friendarray = explode(",", $friendslist); 
$frienduserarray = array(); 

for ($n = 0; $n < count($friendarray); $n++) { 
     $friendidpush = "('".$id."','".$friendarray[$n]."'),"; 
     array_push($frienduserarray, $friendidpush); 
} 

これは私にとっては複雑なことです。 2番目のアレイがなぜ必要なのでしょうか?文字列連結を使用するだけです。

$query = "INSERT INTO UserLinks (User_1, User_2) VALUES "; 
$friendarray = explode(",", $friendslist); 

foreach ($friendarray as $friend) { 
    $query .= "('" . $id . "','" . $friend . "'),"; 
} 

$query = substr($query, 0, -1); // remove trailing comma 

mysql_query($query); 
+0

ああ私が参照してください。私はこれがこれを行う良い方法であるかどうかまだ疑問に思っていますか?もしそうなら、私は続けます! – TaylorMac

+0

Col. Shrapnelあなたの答えも素晴らしいです! – TaylorMac

1

あなたは配列としてあなたのコード内の任意の場所を$frienduserarrayを宣言していないため、このエラーを取得しています。これを宣言するだけで、forループの前に

$frienduserarray=array(); 

が宣言されます。その後、あなたのコードは

$friendarray = explode(",", $friendslist); 
    $frienduserarray=array(); 
    for ($n = 0; $n < count($friendarray); $n++) { 
     $friendidpush = "('".$id."','".$friendarray[$n]."'),"; 
     array_push($frienduserarray, $friendidpush); 
    } 
3
$comma = ""; 
$values = ""; 
$array = explode(",",$friendslist); 
foreach ($array as $friendid) { 
    $values .= $comma."($id,$friendid)"; 
    $comma = ","; 
} 
$sql = "INSERT INTO UserLinks (User_1, User_2) VALUES $values"