Вставка нескольких значений массива в базу данных mySQL

У меня две переменные 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); }