gpt4 book ai didi

php - Easyphp 工作,linux 服务器返回对非对象上的成员函数的调用

转载 作者:太空宇宙 更新时间:2023-11-04 03:37:29 25 4
gpt4 key购买 nike

我使用 Easyphp 进行默认设置的开发。我的所有代码都可以在本地 Easyphp 数据库连接上正常工作。但是,当我将其上传到使用 Linux 服务器的虚拟主机上时,所有带有对象的函数突然返回 OOP 错误。这是经验值。我通常写的正常功能:

function user_data($user_id){
global $db;
$data = array();
$user_id = (int)$user_id;

$func_num_args = func_num_args();
$func_get_args = func_get_args();

if($func_num_args > 1) {
unset($func_get_args[0]);
$fields = '`' . implode('`, `', $func_get_args) . '`';
$query = "SELECT $fields FROM users WHERE user_id = '$user_id'";
$result = $db->query($query);
$data = $result->fetch_assoc();
return $data;
$result->free();
$data->free();
}
}

在我的本地 php 服务器上一切正常。当我使用 Linux 服务器将其上传到虚拟主机后,我得到“在非对象错误上调用成员函数 fetch_assoc() ”,如下所示:

 $data = $result->fetch_assoc();

谁能告诉我我写错了什么?

easyphp 的数据库连接:

 $db = new mysqli("$DB_HOST","$DB_USER","$DB_PASSWORD","$DB_NAME");

Linux 服务器的数据库连接:

 $socket = "/tmp/mysql51.sock";
$db = new mysqli("$DB_HOST","$DB_USER","$DB_PASSWORD","$DB_NAME", 0, $socket);

谢谢

编辑 - 解决方案

我找到了错误的原因。它是在 PHP 代码中的 SQL 查询中编写变量。查询应该是这样的:

$query = "从用户中选择 $fields WHERE user_id = '".$user_id."'";

错误的原因对我来说仍然是个谜。它可以是平台版本或 PHP 版本。

最佳答案

new mysqli 没有返回对象,看起来 mysqli 扩展没有加载

您可能需要在打开数据库连接之前执行此操作

if (! extension_loaded("mysqli")) { ... }

你可以在这里尝试一下 http://micmap.org/php-by-example/en/function/extension_loaded

关于php - Easyphp 工作,linux 服务器返回对非对象上的成员函数的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31091543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com