У меня две переменные 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); }
Затем следует преобразование $ frienduserarray в строку и затем включение его в мой запрос. Это вернуло мне ошибку, и я не думаю, что это правильный способ сделать это … но я изо всех сил пытаюсь найти решение в Интернете.
Вы не инициализируете $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);
$comma = ""; $values = ""; $array = explode(",",$friendslist); foreach ($array as $friendid) { $values .= $comma."($id,$friendid)"; $comma = ","; } $sql = "INSERT INTO UserLinks (User_1, User_2) VALUES $values"
Вы получаете эту ошибку, потому что вы не объявили $frienduserarray
как массив в любом месте вашего кода. Просто объявите это
$frienduserarray=array();
перед циклом for
. После этого ваш код должен выглядеть так:
$friendarray = explode(",", $friendslist); $frienduserarray=array(); for ($n = 0; $n < count($friendarray); $n++) { $friendidpush = "('".$id."','".$friendarray[$n]."'),"; array_push($frienduserarray, $friendidpush); }