#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 будет ресурсом, заданным логическим значением