2011-10-19 68 views
0

我有两个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')"); 

但只有这样我能想到到写这篇(因为这些值显然不是插入的实际值)是这样的:

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

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

其次是$ frienduserarray转换成字符串,然后包括它在我的查询。这给我带来了一个错误,我认为这不是正确的做法......但我正努力在网上找到解决方案。

+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); 
} 

请注意,这似乎是对我来说很复杂。为什么第二个数组甚至是必要的?只需使用字符串连接。

$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作为阵列的任何地方在你的代码中声明。只要声明它

$frienduserarray=array(); 

for循环之前。这之后你的代码看起来应该像

$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"