【发布时间】:2014-04-14 07:35:56
【问题描述】:
我有这个 php 从我的数据库中获取行,但是当我将结果循环到我网站上的 div 中时,它总是错过它检索到的第一行,我不知道为什么。
$db = mysqli_connect('localhost', 'root', '', 'cdb')
or die('Error connecting');
if( isset($_REQUEST['page'])) {
$_SESSION['page'] = $_REQUEST['page'];
}else{
$_SESSION['page'] = 1;
}
$records_per_page = 8;
$where = substr($where, 0, -3);
$query = "SELECT * FROM cars
".$where."";
$result = mysqli_query($db, $query)
or die("Error in query: '$query'");
$row = mysqli_fetch_assoc($result);
$i = 0;
$start = ($_SESSION['page'] - 1) * $records_per_page;
$end = ($_SESSION['page']) * $records_per_page;
while($row = mysqli_fetch_assoc($result) and $i < $end)
{
$i++;
if( $i > $start )
{
echo'
<div class="result_main flip'.$i.' shadow2">
<div class="main_result_carname">
<h2><b>'.$row['make'].' '.$row['model'].'</b></h2>
</div>
<div class="main_result_carprice">
<h2><b>£'.$row['price'].'</b></h2>
</div>
</div>';
}
}
?>
看着它,我觉得它应该可以正常工作,但总是从第二行开始,我能看到的唯一可能影响它的变量是 $i。没有理由为什么它从 1 开始应该是错误的,但无论如何,将其设为 -1 会导致没有记录显示,将其设为 0 使其保持不变,而将其设为 -1 使其从第 3 行开始,并使其2 它从 2d 行开始。
【问题讨论】:
-
您的
$where摄像头来自哪里? (只是出于兴趣) -
$where = " WHERE ";
foreach ($_POST['carID'] as $carID) { $where = $where." carIndex = ".$carID." OR"; }可能有更简单的方法,但我发布了一个数组,需要将其中的值应用于 where 子句。我在查询之前有$where = substr($where, 0, -3);,以摆脱最后的“OR”。 -
缺少消毒处理...
$where = "carIndex IN (".implode(',', $_POST['carID']).")"不需要 substr.
标签: php mysql while-loop