Мне нужно отправить несколько идентификаторов строки базы данных на другую страницу, а затем использовать их id для загрузки строк и обработки. Я использовал переменную сеанса, которая работает нормально.запрос с предварительным исправлением не возвращает никаких результатов
$_SESSION['tmp'] = "50,51,52";
if ($stmt = $mysqli->prepare("SELECT id,jpg WHERE id = ?")) {
$stmt->bind_param("s",$_SESSION['tmp']);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($result_id,$result_jpg);
if ($stmt->num_rows > 0) {
while($stmt->fetch()) {
$image = array($result_id => $result_jpg);
print_r($image."<br />");
}
} else {
echo "Prepare failed: (" . $stmt->errno . ") " . $stmt->error;
}
}
Запрос будет
SELECT id,jpg WHERE id = 50,51,52
, который должен возвращать их все строки, но вместо того, чтобы ничего не отображается на всех, без каких-либо ошибок или что-нибудь. Есть идеи?
###### Редактировать #####
Обновлен мой код:
//Generate the query
$query = "SELECT id,jpg FROM images WHERE id IN (?";
for ($i=1; count($_SESSION['tmp']) > $i; $i++) {
$query = $query.",?";
} $query = $query.")";
if ($stmt = $mysqli->prepare($query)) {
for ($i=1; count($_SESSION['tmp']) > $i; $i++) {
$b = $_SESSION['tmp'][$i]-1;
$stmt->bind_param("s",$b);
}
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($result_id,$result_jpg);
if ($stmt->num_rows > 0) {
while($stmt->fetch()) {
$image = array($result_id => $result_jpg);
print_r($image);
}
} else {
echo "Prepare failed: (" . $stmt->errno . ") " . $stmt->error;
}
}
Не похоже, чтобы сделать зацикливания
bind_param("s",50);
, как получение ошибки:
Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in C:\xampp\htdocs\ppa\add_sales.php on line 39
##### Редактировать 2 #####
Изменено, как это происходит, это отлично работает.
$image = array();
foreach($_SESSION['tmp'] as $x) {
if ($stmt = $mysqli->prepare("SELECT id,jpg FROM images WHERE id = ?")) {
$stmt->bind_param("s",$x);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($result_id,$result_jpg);
if ($stmt->num_rows > 0) {
while($stmt->fetch()) {
$image[$result_id] = $result_jpg;
}
} else {
echo "Prepare failed: (" . $stmt->errno . ") " . $stmt->error;
}
}
}
print_r($image);
Вы не указали Из какой таблицы выбрать. –
подготовлен, не подготовлен. –
Просмотреть обновленное сообщение –