我使用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版本。
new mysqli没有返回对象,看起来mysqli扩展没有加载
在打开到数据库的连接之前,您可能需要执行此操作
if (! extension_loaded("mysqli")) { ... }
你可以在这里试试http://micmap.org/php-by-example/en/function/extension_loaded