在PHP中用于MySQL查询的while()循环内的随机跳转

时间:2015-03-11 14:05:03

标签: php mysql

我正在为大学做一个示例项目并遇到了一个我无法解决的问题。 一般来说,该项目是在Apache上用PHP和MySQL创建一个自动披萨订单系统。系统通过以下步骤完成: - 客户下订单 - >贝克收到订单,收益 - >司机在某个州收到订单,继续 - 客户可以通过会话随时查看订单

现在我挂了最后一步:驱动程序可以看到一个页面,其中包含一个表格,其中包含面包师使用和传递的信息(所有更改都在数据库端)。司机只能看到整个包裹(每当所有比萨饼被标记为特定状态时,也会保存在数据库中)。

为此,我有以下SQL语句

SELECT PizzaID, BestellungID, Adresse, PizzaName, Preis, Status FROM angebot, bestelltepizza, bestellung where bestellung.bestellungid = bestelltepizza.fbestellungid and angebot.PizzaName = bestelltepizza.fPizzaName and (select min(status) from bestelltepizza where bestellung.bestellungid = fbestellungid) >2 ORDER BY Status, BestellungID

现在,当我使用var_dump()获取mysqli_num_rows()输出时,我得到的错误和以下输出int 26。与数据库行相比,它是正确的数字。我获取sql:

while($row = mysqli_fetch_array($this->result)) {
    var_dump(mysqli_num_rows($this->result));
    var_dump($row);
    ...
}

while()循环中包含另一个查询

$this->query = "SELECT fPizzaName FROM bestelltepizza WHERE fBestellungID = '$BestellID'";
var_dump($this->query);
$tmpResult = $this->_database->query($this->query);
$count = mysqli_num_rows($tmpResult);

现在问题是,while()循环遗漏了一个随机$BestellID,其中可以包含x行数据。但是当我计算var_dump()的输出时,一切都是正确的。但是,var_dump($this->query);也没有显示特定跳转的查询语句。

任何想法可能是什么?完整链接到下面的pastebin。

为了不充分扩展这个问题,我将整个代码上传到了pastebin:http://pastebin.com/u888CPLw

Offtopic:感谢任何帮助,谢谢。如果我无法清除我的确切问题或者如果我的问题出现任何问题,请发表评论,我会澄清。感谢。

1 个答案:

答案 0 :(得分:0)

                    while($row = mysqli_fetch_array($this->result)) { 
                        $count = mysqli_num_rows($tmpResult);

                        for($i = 0; $i < $count; $i++) {

                                $tmpVar = mysqli_fetch_array($this->result);

我已经剪断了代码以显示问题

$count基于$tmpResult您正在$this->result上执行获取数组,您应该在$tmpResult上执行此操作

正如Marc B所说,它是对查询的内连接/左连接的简单查询。最好使用连接。