【问题标题】:Call to a member function fetch_assoc() on a non-object on linux server but not on windows在 Linux 服务器上的非对象上调用成员函数 fetch_assoc() 但不在 Windows 上
【发布时间】:2015-05-20 05:16:20
【问题描述】:

当我在 linux 服务器上运行此页面时出现上述错误,但在 windows 机器上运行它时并没有给我任何错误。 以下是我的脚本:

include_once '/../src/init.php';
$userid = $user_data['userid'];

$date = ('Y-m-d'); //get todays date from the server


$db = new mysqli('localhost', 'root', '', 'logfile');

if ($db->connect_error) {


   $error = $db->connect_error;

} else {

$sql = "SELECT a.kiloLogid,a.travelDate,a.openning, a.closing, a.clientsName,a.timeIn,a.timeOut, a.destination,a.diff
                FROM viewDailyDiff a
                WHERE a.`userid` = $userid AND a.`travelDate` = '".$date."'";
$result = $db->query($sql);
if ($db->error) {
    $error = $db->error;
}
}






function getRow($result)

{

 return $result->fetch_assoc();  //the error is on this line

}

请帮忙

【问题讨论】:

  • getRow() 的电话在哪里?
  • getRow() 是一个函数。它是我上传的代码的一部分
  • 是的,我可以看到。但是在你上传的代码中没有调用,那我们怎么知道失败时$result的值是多少呢?

标签: php mysqli


【解决方案1】:

我的东西包含文件init.php 应该调用 getRow 函数。

当 Linux 到 Windows 的变化出现问题时,大多数情况下都可以使用 .htaccess 找到解决方案。尽量不要下载.htaccess

一切顺利

【讨论】:

  • 将函数 getRow() 移动到 init.php 中,看看效果如何
【解决方案2】:

通常当这种情况发生在我身上时,是因为没有返回数据。如果“工作/失败”更改正在移动到新服务器,这通常是因为新服务器无权获取数据。所以不返回任何结果。甚至认为原来的服务器有相同的select语句返回了记录,避免了错误。

如果没有返回结果,在空数据集上调用 fetch_assoc 将在更新的 php.ini 中抛出错误。所以从一台服务器到另一台服务器的 php 版本也可能是一个因素。

如果有返回的记录(绝不是一个坏主意)和/或尝试从命令提示符使用 mysql 客户端手动运行命令(命令行?),则输入代码以仅调用 fetch_assoc 以验证权限和数据。通常,CLI 的错误结果会更加冗长。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 2012-09-26
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多