#php #mysql #sql #for-loop
Вопрос:
/* To sort the id and limit the post by 40 */
$sql = "SELECT * FROM requests";
$result = $conn->query($sql);
$sqlall= "SELECT * FROM requests ";
$resultall = $conn->query($sqlall);
$i = 0;
if ($result->num_rows > 0) {
// Output data of each row
$idarray= array();
while($row = $result->fetch_assoc()) {
echo "<br>";
// Create an array to store the
// id of the blogs
array_push($idarray,$row['id']);
}
}
else {
echo "0 results";
}
?>
<?php
for($x = 1; $x < 40; $x ) {
// This is the loop to display all the stored blog posts
if(isset($x)) {
$query = mysqli_query(
$conn,"SELECT * FROM `requests`");
$res = mysqli_fetch_array($query);
$email1 = $res['email1'];
$msg1= $res['msg1'];
$subject1 = $res['subject1'];
$name1 = $res['name1'];
$id = $res['id'];
результат-40 карт, считывающих данные из первой строки в моей базе данных. кто-нибудь может помочь?
Я использую xampp.
Этот код предназначен для отображения цикла, но если кто-то хочет, чтобы полный код был здесь
Комментарии:
1. Вы сохраняете все идентификаторы в массиве
$idarray
, а затем просто выполняете 40 раз один и тот же запрос снова и всегда извлекаете одну и ту же первую строку.2. @AllanSharad помог ли вам приведенный ниже ответ? Если да, пожалуйста, не забудьте отметить его как принятый и/или проголосовать за него. Если это не помогает, пожалуйста, объясните, почему. Спасибо.
Ответ №1:
Вы храните все идентификаторы в массиве $idarray
, но на самом деле не используете их должным образом. Вы перебираете их, но просто выполняете SELECT * FROM
запросы еще 40 раз и всегда извлекаете одну и ту же первую строку. Вы никогда не используете идентификатор для изменения запроса.
Но в любом случае действительно нет смысла запускать множество отдельных запросов. Если вам нужны только первые 40 строк, используйте LIMIT
ключевое слово MySQL. Обычно это лучше всего работает в сочетании с ORDER BY
тем же. Что-то вроде этого:
$sql = "SELECT * FROM requests ORDER BY id LIMIT 40";
$result = $conn->query($sql);
while ($res = $result->fetch_assoc()) {
$email1 = $res['email1'];
$msg1 = $res['msg1'];
$subject1 = $res['subject1'];
$name1 = $res['name1'];
$id = $res['id'];
//example output, just for demo:
echo $email1." ".$msg1." ".$subject1." ".$name1." ".$id;
}
Документация: https://dev.mysql.com/doc/refman/8.0/en/limit-optimization.html