在mySQL数据库中插入多个数组值

时间:2011-10-19 08:34:09

标签: php mysql insert

我有两个PHP变量,两个字符串:

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

接下来将$ frienduserar转换为字符串,然后将其包含在我的查询中。这给我带来了一个错误,我不认为这是正确的方法...但我很难在网上找到解决方案。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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"

答案 2 :(得分: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);
  }