【发布时间】:2015-06-27 17:33:03
【问题描述】:
我正在使用 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 = "SELECT $fields FROM users WHERE user_id = '".$user_id."'";
错误的原因对我来说仍然是个谜。它可以是平台版本或 PHP 版本。
【问题讨论】:
标签: php linux oop server easyphp