Объединить массив, содержащий несколько идентификаторов пользователей, с таблицей users и создать новый массив

#php #mysql #sql #arrays

#php #mysql #sql #массивы

Вопрос:

У меня есть массив, который содержит кучу идентификаторов пользователей:

 array('1,2,3,4')
  

И мне нужно сопоставить эти идентификаторы пользователей со столбцом id в таблице users и создать массивы, в которых есть first_name и last_name пользователей. Я знаю, что мне, вероятно, нужно использовать ЛЕВОЕ СОЕДИНЕНИЕ, но я не могу понять, как его зациклить. Некоторое время назад я пробовал foreach (извините, удалил код), но не смог заставить его работать. Есть мысли?

Спасибо.

Ответ №1:

Расширение Mysqli. Попробуйте этот код:

 $userIds = array(1,2,3,4);
$users = array();
con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM users
WHERE id in ('".implode(',',$userIds)."')");
$count=0;

while($row = mysqli_fetch_array($result)) {
  $users[$count]['FirstName'] = $row['FirstName'];
  $users[$count]['LastName'] = $row['LastName'];
  $count  ;
}

print_r($users);//result
  

Комментарии:

1. Я внес несколько изменений в этот код, но это определенно привело меня туда, где я должен был быть. Я изменил цикл while на этот и повторил результат: while($row = $r-> fetch_assoc()){ $multiple_row_result[] = $row; }

Ответ №2:

Попробуйте следующее :

 $arr = array('1,2,3,4');
$result = array();
$results = mysql_query("SELECT id,first_name,last_name FROM table_name WHERE id IN (".$arr.")");
if(mysql_num_rows($results) > 0) {
    while($row = mysql_fetch_assoc($results)) {
       $result[] = $row;
    }
}
echo '<pre>';
print_r($result);
echo '</pre>';
  

Комментарии:

1. Спасибо за ответ. Это то, что я получил: mysql_num_rows() ожидает, что параметр 1 будет ресурсом, заданным логическим значением