我正在为大学做一个示例项目,但遇到了一个无法解决的问题。 总的来说,该项目是在 Apache 上使用 PHP 和 MySQL 创建一个自动披萨订单系统。该系统通过以下步骤进行工作: - 顾客下订单 -> 面包师收到订单, yield -> 司机在特定状态收到订单, yield - 客户可以通过 session 随时查看订单
现在我在最后一步挂断了:驱动程序可以看到一个页面,其中有一个表,其中包含面包师使用和传递的信息(所有更改都在数据库端)。司机只能看到整个包裹(当所有披萨都标记为某种状态时,也保存在数据库中)。
为此,我有以下 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:感谢任何帮助,谢谢。如果我未能解决我的确切问题,或者如果我的问题出现任何问题,请发表评论,我会澄清。谢谢。
最佳答案
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 所说,它是一个简单的查询,可以对查询进行内连接/左连接。使用连接会更好。
关于php - PHP for MySQL 查询中 while() 循环内的随机跳转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28988750/