【问题标题】:For loop not executing when num_rows returns 1当 num_rows 返回 1 时,for 循环不执行
【发布时间】:2015-03-31 19:37:52
【问题描述】:

我在以下代码中遇到了 for 循环问题:

<?php
// connect to database and establish $link, okay
// log in user if possible and get $userID, okay

// if logged in, get list of records
$sql = "SELECT id,name FROM `record` WHERE user=$userID ORDER BY accessed";
$records = $link->query($sql); // returns rows successfully

if (!($records->num_rows > 0)) { // if query returns no rows
  // display button to create a record
} else {
  // if query returns rows
  for ($i = 0; $i < $records->num_rows; $i++) {
    $row = $records->fetch_assoc();
    if ($i === 0) {
      // display first existing record button which is also a css hover to display subsequent buttons
    } else if ($i === 1) {
      // display second existing record button if exists
    } else {
      // display all other existing record buttons
    }
  }
  // display button to create an additional record
}
  • 如果 userID 与表 record 中的 0 条记录相关联,则第一个 if 只显示新记录按钮,如预期的那样。
  • 如果 userID 与表 record 中的 2 条或更多记录相关联,则 for 循环将按预期执行,并按预期显示新记录按钮后跟的记录。
  • 如果 userID 与 1 条记录相关联,for 循环不会执行,并显示附加记录按钮。

echo $records-&gt;num_rows会显示我在phpmyadmin中看到的对应记录数。

知道为什么当$records-&gt;num_rows 返回 1 时 for 循环没有按预期执行吗?

【问题讨论】:

  • if (!($records->num_rows > 0) { 我是唯一缺少第二个右括号的人吗?
  • 在此处重新输入编辑器时错过了这一点,已修复。对此感到抱歉。
  • 所以你是说当num_rows==1时,循环不会执行一次,if ($i === 0) { }里面的代码不会被执行?跨度>
  • @satchcoder 完全正确。
  • 但是循环至少执行一次?您是否尝试过在每次迭代开始时回显某些内容?一切似乎都正确!或者 $i 可能有些奇怪,您是否尝试过仅使用 == 而不是 === 进行比较?

标签: php mysql for-loop mysqli mysql-num-rows


【解决方案1】:
当 $records->num_rows 返回 1 然后 循环将执行一次 $i = 0 当 $records->num_rows 返回 2 然后 循环将执行两次 $i = 0 , $i=1 并且 $i === 1 将返回 true 并且第二条记录按钮将与第一条记录一起显示。 当 $records->num_rows 返回超过 2 然后 循环将执行两次以上,即 $i = 0 , $i=1 ,$i =2 ..so on ,$i===0 , $i === 1 两者都将返回 true 以及 else 部分 并显示所有按钮。 ... .. 所以。 当 $records->num_rows 返回 1 秒记录按钮将不会显示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-06
    • 2016-12-30
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2018-03-19
    • 2022-06-15
    相关资源
    最近更新 更多