Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环失败时PHP内部查询_Php_Mysqli - Fatal编程技术网

循环失败时PHP内部查询

循环失败时PHP内部查询,php,mysqli,Php,Mysqli,将我的代码更改为此,我仍然遇到了相同的问题,if子句if met,但它与我的else相反,原因是您使用的变量名相同,相互覆盖$objResult将其重命名为类似于内部查询的$objResult2 需要记住的一点是,除非您没有提供某些代码,否则循环中的内部查询实际上是不必要的。您可以将该查询放在之外,同时循环。将节省您的时间和内存。尽管我认为有其他方法可以清理此代码,但在我看来,您似乎试图将DateTime对象与日期字符串进行比较,这将产生不可预测的结果。尝试将while部分更改为: $i

将我的代码更改为此,我仍然遇到了相同的问题,if子句if met,但它与我的else相反,原因是您使用的变量名相同,相互覆盖
$objResult
将其重命名为类似于内部查询的
$objResult2


需要记住的一点是,除非您没有提供某些代码,否则循环中的内部查询实际上是不必要的。您可以将该查询放在
之外,同时循环
。将节省您的时间和内存。

尽管我认为有其他方法可以清理此代码,但在我看来,您似乎试图将DateTime对象与日期字符串进行比较,这将产生不可预测的结果。尝试将while部分更改为:

    $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;
            }
        }
    }

我不确定这是否能完全解决您的问题,但它应该会让您更接近。

如果前面给出了
$id
为什么要在循环中查询?我需要在第二个查询中使用这一部分:按邮政数量限制订购1@user他说你可以在循环之外进行查询,节省一些资源。学习如何使用SQL连接,这样,您就不需要在PHP循环中低效地执行查询了。甚至可以将同一个表连接到它本身吗?Id现在就这样做了,即使失败了
$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;
        }
    }
}