$id = 2;
// query to fetch delayed
$sql = "SELECT * FROM leads WHERE status = ('$id') LIMIT 1";
$obResult = $objConnection->query($sql);
// query to fetch if there is no delayed
$q = "SELECT * FROM leads WHERE status = ('$id') AND later != '1' ORDER BY postnummer LIMIT 1";
$oResult = $objConnection->query($q);
// primary query to run, which makes use of the two above accordingly
$query = "SELECT * FROM leads WHERE status = ('$id') LIMIT 1";
$objResult = $objConnection->query($query);
while ($row = $objResult->fetch_object()) {
if (new DateTime() > $row->delay && $row->delay != '0000-00-00 00:00:00') {
while ($row = $obResult->fetch_object()) {
echo $row->firmanavn;
}
} else {
while ($row = $oResult->fetch_object()) {
echo $row->firmanavn;
}
}
}
将我的代码更改为此,但仍然遇到了同样的问题,如果满足if子句,但它会从我的其他地方回复
答案 0 :(得分:2)
原因是您使用的是相互覆盖的相同变量名称。对于内部查询,$objResult
将此名称重命名为$objResult2
。
要记住的一件事是,除非你没有提供一些代码,否则你在循环中的内部查询实际上是不必要的。您可以将该查询放在while loop
之外。会节省你的时间和时间存储器中。
答案 1 :(得分:0)
虽然我认为还有其他方法可以清除此代码,但在我看来,您正在尝试将DateTime对象与日期字符串进行比较,这会产生不可预测的结果。尝试将您的while部分更改为:
$current_date = new DateTime();
while ($row = $objResult->fetch_object()) {
if (
$current_date->format('Y-m-d H:i:s') > $row->delay &&
$row->delay != '0000-00-00 00:00:00'
) {
while ($row = $obResult->fetch_object()) {
echo $row->firmanavn;
}
} else {
while ($row = $oResult->fetch_object()) {
echo $row->firmanavn;
}
}
}
我不确定这会完全解决你的问题,但它会让你更接近。