Доброго утра.
С подготовленными выражениями не всё так просто, если использовать mysqli* (процедурный или объектный стиль).
В вашем случае придётся разобрать, что именно написано:
$q = "SELECT name, last_name, email FROM users WHERE id IN (?, ?)";
$stmt = mysqli_prepare($link, $q);
if (false === $stmt) {
die('statement was executed with errors');
}
$id = 1;
$anotherId = 2;
//обратите внимание на строку типов - "ii",
// подозреваю, что у вас ошибочно описан строковый тип "s" для id_user
$stmt->bind_param("ii", $id, $anotherId);
$stmt->execute();
$stmt->store_result(); // буферизация
echo "<br>Rows: " . $stmt->num_rows . "<br>"; // количество строк в результате
// При работе с подготовленными выражениями и результатами нам нужно точно знать, что мы получаем в запросе (см. SELECT <fields>)
// Можно получать в запросе все атрибуты, а конкретные имена атрибутов забирать через metadata
$name = null;
$lastName = null;
$email = null;
// Привязка переменных к результирующему набору (порядок, как в SELECT)
$stmt->bind_result($name, $lastName, $email);
// каждый вызов fetch будет связывать наши переменные и дынными из результата
while ($stmt->fetch()) {
var_dump([
'name' => $name,
'last_name' => $lastName,
'email' => $email,
]);
}
$stmt->free_result(); // освобождаем память
$stmt->close();
$link->close();
Ссылки:
Статья на хабре,
Stackoverflow
P.S. Не вполне понятно, почему написано именно так (через mysqli*, зачем нужен store_result).
Думаю, что сам код можно упростить если воспользоваться тем же PDO или более высокоуровневым инструментом.