Php Cron作业循环没有从mysqli对象获取任何信息,但print\r表示有行;在浏览器中运行时工作正常

Php Cron作业循环没有从mysqli对象获取任何信息,但print\r表示有行;在浏览器中运行时工作正常,php,mysqli,cron,Php,Mysqli,Cron,我有一个cron作业,它运行一些mysqli查询,然后将信息存储在一个数组中供以后使用。当cron作业运行时,mysqli查询不会返回语法错误。我打印了结果,结果显示mysqli对象中有多行,但是当foreach循环运行时,没有从结果对象中提取任何信息。有趣的部分?我在浏览器中运行相同的脚本进行调试,一切都很完美。下面是代码。(浏览器PHP版本5.7,服务器/cron PHP版本5.3) 我包括了从上面返回的打印方法。运行cron时,print\r($result)返回以下内容: mysqli_

我有一个cron作业,它运行一些mysqli查询,然后将信息存储在一个数组中供以后使用。当cron作业运行时,mysqli查询不会返回语法错误。我打印了结果,结果显示mysqli对象中有多行,但是当foreach循环运行时,没有从结果对象中提取任何信息。有趣的部分?我在浏览器中运行相同的脚本进行调试,一切都很完美。下面是代码。(浏览器PHP版本5.7,服务器/cron PHP版本5.3)

我包括了从上面返回的打印方法。运行cron时,print\r($result)返回以下内容:

mysqli_result Object
(
    [current_field] => 0
    [field_count] => 16
    [lengths] =>
    [num_rows] => 8
    [type] => 0
)

而print\u r($row)不返回任何内容。当通过浏览器运行时,我会得到相同的信息print\r($result),但我也会得到print\r($row)的mysql记录。需要注意的是,我没有收到任何错误。

下面是一个简单的示例,演示如何正确使用在查询中运行时返回的对象:

<?php
// ...
$result = $mysqli->query("SELECT * FROM emailType ORDER BY emailNumber");
print_r($result);
while($row = $result->fetch_assoc()) {
    print_r($row);
    // ...
}

这很有趣,因为您试图迭代该对象,这没有任何意义……我想说的是:您无法迭代返回的对象。您必须使用该对象来使用该对象提供的方法获取行。您的
print\u r()
调用清楚地显示
foreach
循环可以迭代的对象内部没有“行”。请看几个示例,了解如何使用mysql连接器。不确定在浏览器触发的请求中执行该脚本时会看到什么,但肯定不会看到该数据库表中的条目。我刚刚开始从过程到oop,所以使用对象对我来说非常陌生。那么,@arkascha你是说我应该使用类似
的while($row=$result->fetch_assoc())
从对象中获取信息?是的,这正是我在下面发布的答案中所展示的。这就解决了问题。我还在学习如何正确使用物品。我试着查看php手册,但这件事让我感到困惑,我不想承认。谢谢。很高兴我能帮上忙!阅读php文档是件好事(我希望是php.net中的真实文档…)。大多数人不会这样做,只会依赖一些有问题的第三方解释,如果事情没有按预期进行,他们会感到沮丧。坚持使用原始文档,您将习惯紧凑而精确的风格。
<?php
// ...
$result = $mysqli->query("SELECT * FROM emailType ORDER BY emailNumber");
print_r($result);
while($row = $result->fetch_assoc()) {
    print_r($row);
    // ...
}