【发布时间】:2020-04-30 01:47:45
【问题描述】:
我想比较一个表中的两个值:
这是我的桌子:
ID;VALUE
1;700
2;600
3;800
4;900
这是我的查询:
$stmt = $db->query("SELECT ID, VALUE FROM TABLE);
现在我喜欢将当前行的结果与下一行的结果进行比较。在 mysql 中这很容易,因为我必须设置行号。我没有找到 PDO 的任何解决方案。
这是我的代码:
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$id = $row["ID"];
$val_current = $row["VALUE"];
$row_next = $stmt->fetch(PDO::FETCH_ASSOC);
$val_next = $row["VALUE"];
if ($val_current > $val_next){
echo "$id is greate!";
}else{
echo "$id is less!";
}
}
结果是:
1 is greater
3 is less
他错过了检查 ID 2 和 ID 3 因为我在 while 循环中获取下一个元素。所以我获取它以获取下一个值,然后在循环中再次获取。我可以在循环结束时重新定位光标吗?
【问题讨论】:
-
好吧,你也可以"比较当前的和以前的"。存储当前行,然后当下一行出现时,比较它,然后覆盖。这将解决一些被跳过的行
-
请注意,SQL 中的行没有顺序,因此如果要比较下一个和上一个,则需要在某处指定该顺序 - 在查询中或结果数组中。
标签: php mysql loops pdo while-loop