Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 致命错误:对非对象调用成员函数real\u escape\u string()_Php_Mysqli - Fatal编程技术网

Php 致命错误:对非对象调用成员函数real\u escape\u string()

Php 致命错误:对非对象调用成员函数real\u escape\u string(),php,mysqli,Php,Mysqli,将此代码从mysql转换为mysqli后,在登录页面执行时出现错误,错误为:致命错误:在第127行的dbc.php中的非对象上调用成员函数real_escape_string。不幸的是,我不能帮助自己纠正它…任何帮助都将不胜感激 下面给出了dbc.php $link变量没有传递到函数中,因此需要查看。因此,您需要将$link传递到您的函数中,例如,函数filter$link、$data{,然后像$cookie\u user\u id=filter$link、$\u cookie['user\u

将此代码从mysql转换为mysqli后,在登录页面执行时出现错误,错误为:致命错误:在第127行的dbc.php中的非对象上调用成员函数real_escape_string。不幸的是,我不能帮助自己纠正它…任何帮助都将不胜感激

下面给出了dbc.php

$link变量没有传递到函数中,因此需要查看。因此,您需要将$link传递到您的函数中,例如,函数filter$link、$data{,然后像$cookie\u user\u id=filter$link、$\u cookie['user\u id'];那样调用它。注销函数和使用$link的任何其他函数也是如此。

您正在使用的

global $db;
在一些数据库函数中。但在代码的前面,您做了以下操作:

$link = new mysqli(DB_HOST, DB_USER, DB_PASS) or die("Couldn't make connection.");
$db = $link->select_db(DB_NAME) or die("Couldn't select database");
选择_db.$link是您的数据库连接,而不是$db

筛选器函数使用$link,但不将其声明为全局或接受为参数。但不应使用该函数。应使用准备好的语句,而不是转义字符串,并在以下查询中直接使用它们:

"select `ckey`,`ctime` from `users` where `id` ='$cookie_user_id'"

您可以查看更多信息。

因为我在某处迷路了……有人能更正代码吗?您需要将函数filter$data{更改为函数filter$link$data{和function logout到function logout$link。然后在登录页面中,您需要更改filter$value;filter$link,value;以及您看到logout的任何位置;应该是logout$link;请停止使用PHP 5。您早就应该升级了。您的代码易受SQL注入攻击。您应该使用准备好的语句。不要使用filt之类的函数呃。他们所做的就是破坏你的数据。这是一种可怕的做法,应该避免。