Я пытаюсь выбрать данные из базы данных. Сценарий php должен выбрать 4 строки из таблицы базы данных, начиная с самой первой строки, но код заканчивает тем, что выбирает только 3 строки, начиная со второй строки вместо первой. Что я должен делать?
<?php
try{
require 'mysqli_connect.php';
$maxrow = 4;
$start = 0;
$query = "SELECT user_id , first_name , last_name, email , registration_date FROM users LIMIT ? , ?";
$stmt = mysqli_stmt_init($dbcon);
mysqli_stmt_prepare($stmt , $query);
mysqli_stmt_bind_param($stmt , 'ii' , $start ,$maxrow); // still showing only three rows and does not count from zero
mysqli_stmt_execute($stmt);
$record = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_array($record , MYSQLI_NUM);
if ($record){
echo "<table>";
echo "<tr>";
echo "<th>user_id</th>";
echo "<th>first_name</th>";
echo "<th>last_name</th>";
echo "<th>email</th>";
echo "<th>registration_date</th>";
echo "</tr>";
while ($row = mysqli_fetch_array($record , MYSQLI_NUM)) {
$user_id = $row[0];
$first_name = $row[1];
$last_name = $row[2];
$email = $row[3];
$registration_date = $row[4];
echo '<tr>
<td><a href = "edit_user.php?id=' . $user_id . '">Edit</a></td>
<td><a href = "delete_user.php?id=' . $user_id . '">Delete</a></td>
<td>' . $last_name . '</td>
<td>' . $first_name . '</td>
<td>' . $email . '</td>
<td>' . $registration_date . '</td>
</tr>';
}
echo "</table>";
mysqli_free_result ($record); // Free up the resources.
}
}catch(Exception $e){
//echo $e->getMessage();
}catch(Error $e){
//echo $e->getMessage();
}
?>
мне действительно нужен этот $ start, потому что я хочу использовать его для разбивки на страницы, хотя спасибо






Здесь выбирается первая строка $row = mysqli_fetch_array($record , MYSQLI_NUM);. Итак, mysqli_fetch_array() в while начинается со второго ряда.
Ваша первая запись находится здесь:
$row = mysqli_fetch_array($record , MYSQLI_NUM);
Должен быть
<?php
try{
require 'mysqli_connect.php';
$maxrow = 4;
$start = 0;
$query = "SELECT user_id , first_name , last_name, email , registration_date FROM users LIMIT ? , ?";
$stmt = mysqli_stmt_init($dbcon);
mysqli_stmt_prepare($stmt , $query);
mysqli_stmt_bind_param($stmt , 'ii' , $start ,$maxrow); // still showing only three rows and does not count from zero
mysqli_stmt_execute($stmt);
$record = mysqli_stmt_get_result($stmt);
// Your first record is fetch here! OMG!!
// $row = mysqli_fetch_array($record , MYSQLI_NUM);
if ($record){
echo "<table>";
echo "<tr>";
echo "<th>user_id</th>";
echo "<th>first_name</th>";
echo "<th>last_name</th>";
echo "<th>email</th>";
echo "<th>registration_date</th>";
echo "</tr>";
while ($row = mysqli_fetch_array($record , MYSQLI_NUM)) {
$user_id = $row[0];
$first_name = $row[1];
$last_name = $row[2];
$email = $row[3];
$registration_date = $row[4];
echo '<tr>
<td><a href = "edit_user.php?id=' . $user_id . '">Edit</a></td>
<td><a href = "delete_user.php?id=' . $user_id . '">Delete</a></td>
<td>' . $last_name . '</td>
<td>' . $first_name . '</td>
<td>' . $email . '</td>
<td>' . $registration_date . '</td>
</tr>';
}
echo "</table>";
mysqli_free_result ($record); // Free up the resources.
}
}catch(Exception $e){
//echo $e->getMessage();
}catch(Error $e){
//echo $e->getMessage();
}
?>
Просто выполните
LIMIT 4, не нужно объявлять начальную строку, если она начинается с первой строки.