我有两个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转换为字符串,然后将其包含在我的查询中。这给我带来了一个错误,我不认为这是正确的方法...但我很难在网上找到解决方案。
答案 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);
}