MySQL查询只收到1个结果


MySQL query receives only 1 result

我有下面的代码,它只显示1个结果。但是,我的数据库中有六行product_id="1"。我说的是$order,只有一个出现,而不是六个。怎么了?

$get = "SELECT * FROM artikelbestelling WHERE product_id = '1' LIMIT 0, 500";
$doget = mysql_query($get) or die(mysql_error());
while($row = mysql_fetch_assoc($doget))
{
$order = $row['ordernummer'];
$artikel = $row['artikelnummer'];
echo "<strong>$order</strong><br />";
}

我的数据库结构:

id(主要和自动递增)(int 11)

product_id(int 11)

数字(int 11)

ordernummer(int 11)

因为您的id是int,所以不需要使用"

$get = "SELECT * FROM artikelbestelling WHERE product_id = '1' LIMIT 0, 500";
$doget = mysql_query($get) or die(mysql_error());
while($row = mysql_fetch_array($doget))
{
$order = $row['ordernummer'];
$artikel = $row['artikelnummer'];
echo "<strong>$order</strong><br />";
}

试试这个。。。。。

$get = "SELECT * FROM artikelbestelling WHERE product_id = '1'  
LIMIT 0, 500";
$doget = mysql_query($get) or die(mysql_error());
while($row = mysql_fetch_array($doget))
{
echo "$row[ordernummer]";
echo "<br />";
echo "$row[artikelnummer]";
}

有两件事我立即注意到不应该有什么不同,但可能值得一试,看看它是否有影响。首先,假设product_id列是数字列而不是字符串,请尝试仅使用1而不是"1"。其次,针对FALSE显式检查mysql_fetch_assoc()的结果,而不是任何可能计算为FALSE的表达式。

$get = "SELECT * FROM artikelbestelling WHERE product_id = 1 LIMIT 0, 500";
$doget = mysql_query($get) or die(mysql_error());
while(($row = mysql_fetch_assoc($doget)) !== FALSE)
{
    $order = $row['ordernummer'];
    $artikel = $row['artikelnummer'];
    echo "<strong>$order</strong><br />";
}

编辑:

如果您将代码更改为以下内容,会得到什么?

$get = "SELECT * FROM artikelbestelling WHERE product_id = 1 LIMIT 0, 500";
$doget = mysql_query($get) or die(mysql_error());
$index = 0;
while(($row = mysql_fetch_assoc($doget)) !== FALSE)
{
    $order = $row['ordernummer'];
    $artikel = $row['artikelnummer'];
    echo $index++ . ": <strong>$order</strong><br />";
}

具体来说,它是从0一直计数到7,还是只显示第0行?我认为它一定是以下其中之一:

  • 您实际上只返回了一行结果(这与您关于mysql_num_rows()返回8的声明相矛盾)
  • mysql_fetch_assoc()在一行之后错误地返回FALSE(这表明某种影响PHP或MySQL驱动程序的错误,这通常是不太可能的),或者
  • 根据Marc B关于空标签的评论,它正在像应该的那样迭代循环,但您误解了结果

这可能有效地帮助缩小它的范围。