【发布时间】: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->num_rows会显示我在phpmyadmin中看到的对应记录数。
知道为什么当$records->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