Php MySQL查询只收到1个结果

Php MySQL查询只收到1个结果,php,mysql,Php,Mysql,我有下面的代码,它只显示一个结果。但是,我的数据库中有六行产品_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 = $ro

我有下面的代码,它只显示一个结果。但是,我的数据库中有六行产品_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 />";
}
$get=“从Artikebestelling中选择*,其中产品id='1'限制为0,500”;
$doget=mysql\u query($get)或die(mysql\u error());
while($row=mysql\u fetch\u assoc($doget))
{
$order=$row['ORDERNUMER'];
$artikel=$row['artikelnumer'];
echo“$order
”; }
我的数据库结构:

id(主增量和自动增量)(int 11)

产品标识(int 11)

编号(int 11)


ordernummer(int 11)

我立即注意到两件事,它们不应该有什么区别,但可能值得一试,看看是否有区别。首先,假设product_id列是数字列而不是字符串,请尝试仅使用1而不是“1”。其次,显式检查
mysql\u fetch\u assoc()
的结果是否为FALSE,而不是检查任何可能计算为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=“从Artikebestelling中选择*,其中产品id=1,限制为0,500”;
$doget=mysql\u query($get)或die(mysql\u error());
while(($row=mysql\u fetch\u assoc($doget))!==FALSE)
{
$order=$row['ORDERNUMER'];
$artikel=$row['artikelnumer'];
echo“$order
”; }
编辑:

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

$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 />";
}
$get=“从Artikebestelling中选择*,其中产品id=1,限制为0,500”;
$doget=mysql\u query($get)或die(mysql\u error());
$index=0;
while(($row=mysql\u fetch\u assoc($doget))!==FALSE)
{
$order=$row['ORDERNUMER'];
$artikel=$row['artikelnumer'];
echo$index++.“:$order
”; }
具体来说,它是从0一直计数到7,还是只显示第0行?我认为它应该是以下之一:

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

这可能有助于缩小它的范围。

由于您的id是int,因此不需要使用“”

$get=“从Artikebestelling中选择*,其中产品id='1'限制为0,500”;
$doget=mysql\u query($get)或die(mysql\u error());
while($row=mysql\u fetch\u数组($doget))
{
$order=$row['ORDERNUMER'];
$artikel=$row['artikelnumer'];
echo“$order
”; }
试试这个

$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]";
}
$get=“从Artikebestelling中选择*,其中产品标识='1'
限0.500”;
$doget=mysql\u query($get)或die(mysql\u error());
while($row=mysql\u fetch\u数组($doget))
{
回显“$row[ordernummer]”;
回声“
”; 回声“$row[ArtikerNummer]”; }
请不要为新代码使用
mysql.*
函数。它们不再得到维护,社区已开始恢复。看到了吗?相反,你应该学习并使用或。如果你不能决定,将帮助你做出选择。如果您想学习,。您可以指定您的表结构和/或数据吗?
echo mysql\u num\u rows($doget)
在运行查询后会说什么?在您的代码片段中看不到任何在一次itereation之后会中止循环的内容,因此很可能您实际上只得到一个结果行。在php中看不到任何问题,您可以在mysql终端中运行查询吗?请参阅我更新的数据库结构问题!我同意他的更新,看起来他引用的是字符串而不是数字==部分是没有意义的。如果fetch调用返回false,循环将中止。在PHP中,赋值的结果就是被赋值的值。我很清楚@Marc B。我的观点是,有时返回的值计算为false,而不是显式false。例如,如果mysql_fetch_assoc()调用的结果返回一个空数组0、null等,那么即使有更多的项目需要提取,它也会结束while()循环。理论上,mysql_fetch_assoc()不应该返回这样一个值(我在回答中提到了),但是当文档说它返回FALSE时,我的最佳实践是显式测试FALSE,而不是可能被误认为FALSE的东西。我看不出fetch是如何做到这一点的。它要么返回一个数据数组,要么返回false。它不能返回一个空数组-你不能选择任何内容,如果没有要获取的数据(空集),那么无论如何都会得到false。坦率地说,如果mysql_num_rows()返回8,而他在循环中只返回一个结果,然后,有些事情已经不正常了,也许有必要开始检查你假设的事情,以确保它们是真的。这叫做故障排除。如果明显的东西不起作用(或者没有“明显的东西”),那么开始检查不明显的东西。这大概是我第二次或第三次在试图帮助某人解决问题和检查假设时,被否决的答案。欢迎使用Stack Overflow,如果可能的话,不要在查询中使用“*”,除非您要使用所有字段。它懒惰,效率低下。养成写域名的习惯…祝你好运
$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]";
}