MySQL跳过第一行

8

我看到其他人也有这个问题,但是我看到的解决方案对我没用或者我不知道如何使用它们:P

<?php
$ordre = "nom";
$croissance = "ASC";

if(isset($_GET["ordre"])){
    $ordre = $_GET["ordre"];
};  

if(isset($_GET["croissance"])){
    $croissance = $_GET["croissance"];
};

$con = mysql_connect('localhost','root','');
mysql_select_db('sdj_jeux', $con);
$sql = "SELECT * FROM jeux ORDER BY $ordre $croissance";
$result = mysql_query($sql, $con);
$row = mysql_fetch_array($result);  

$couleurcompteur = 0;
while ($row = mysql_fetch_array($result)){
    $couleurcompteur += 1;
if($couleurcompteur % 2){
    $classe = "pale";   
} else {
    $classe = "fonce";  
    };
?>

我的代码跳过了数据库中的第一行,我不明白为什么。

2个回答

12

删除这一行:

$row = mysql_fetch_array($result);

while循环在第一次迭代中将获取第一行。

生成的代码:

<?php
$ordre = "nom";
$croissance = "ASC";

if(isset($_GET["ordre"])){
    $ordre = $_GET["ordre"];
};  

if(isset($_GET["croissance"])){
    $croissance = $_GET["croissance"];
};

$con = mysql_connect('localhost','root','');
mysql_select_db('sdj_jeux', $con);
$sql = "SELECT * FROM jeux ORDER BY $ordre $croissance";
$result = mysql_query($sql, $con);

$couleurcompteur = 0;
while ($row = mysql_fetch_array($result)){
    $couleurcompteur += 1;
if($couleurcompteur % 2){
    $classe = "pale";   
} else {
    $classe = "fonce";  
    };
?>

@UnholyRanger的上面有一个很好的补充。你应该将这段代码发布到代码审查中。使用PDO或mysqli代替mysql_* - Connor McArthur
我仍然不明白为什么它会跳过第一行?@ConnorMcArthur - Pie

4

这就是你的问题所在:

$row = mysql_fetch_array($result);  

$couleurcompteur = 0;
while ($row = mysql_fetch_array($result)){

while 循环之前使用一次 mysql_fetch_array(),这会丢弃第一行因为您没有使用它。请删除这个不必要的调用。

注意: 不要使用 MySQL_*,因为它已经在 PHP 5.5 中被弃用。改用 MySQLi_* 或 PDO。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接