Php 为什么会出现这种错误?

Php 为什么会出现这种错误?,php,mysql,sql,Php,Mysql,Sql,在我的php wap网站上,我有时会遇到一个奇怪的错误!它不是持久性的,只是偶尔出现&若我刷新页面,错误就会消失,正常页面就会出现。我正在附加错误截图- 172 fun.inc.php的行是- return mysql_real_escape_string($str); 为了更好地理解,我将第164行粘贴到212行 function clean($str) { $str = @trim($str); if(get_magic_quotes_gpc()) { $str = stripslash

在我的php wap网站上,我有时会遇到一个奇怪的错误!它不是持久性的,只是偶尔出现&若我刷新页面,错误就会消失,正常页面就会出现。我正在附加错误截图-

172 fun.inc.php的行是-

return mysql_real_escape_string($str);
为了更好地理解,我将第164行粘贴到212行

function clean($str)
{
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
$str = str_replace("<",'',$str);
$str = str_replace(">",'',$str);
}
return mysql_real_escape_string($str);
}

function regchars($word){
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
for($i=0;$i<strlen($word);$i++){
$ch = substr($word,$i,1);
$nol = substr_count($chars,$ch);
if($nol==0){
return true;
}
}
return false;
}

function nospace($word){
$pos = strpos($word," ");
if($pos === false){
return false;
}else{
return true;
}
}

function checknumber($word){
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
$ch = substr($word,0,1);
$sres = ereg("[0-9]",$ch);
$ch = substr($word,0,1);
$nol = substr_count($chars,$ch);
if($nol==0){
return true;
}
return false;
}

function registerform($ef)
{
$errl = "";
switch($ef)
{
函数清理($str)
{
$str=@trim($str);
如果(获取\u魔术\u引号\u gpc()){
$str=条带斜杠($str);
$str=str_替换(“,”$str);
}
返回mysql\u real\u escape\u字符串($str);
}
函数regchars($word){
$chars=“abcdefghijklmnopqrstuvxyzabefghijklmnopqrstuvxyz012456789-”;

对于($i=0;$i您未连接到MySQL。如果您不想执行SQL查询,可以删除此函数。

此函数需要数据库连接,以便它可以检测正在使用的字符集并正确转义

但是,您根本不应该使用该库-它现在已被弃用。请使用或,并在自己插入值之前切换到参数化,而不是转义值


PHP似乎也在试图以root用户身份连接到当前数据库。如果要建立连接,请记住,使用root用户连接是个坏主意。请与一个对应用程序的工作权限最小的用户连接。

@userNOID:如果您再多解释一点,我会很有帮助。我应该把add放在哪里slashes()?它如何防止用户显示我给出的错误代码(截图)?
mysql\u real\u escape\u string()
需要mysql连接。您的错误消息说您未成功连接到mysql。如果您仍然未连接,请将
mysql\u real\u escape\u string()
替换为
addslashes()
不要使用
addslashes
而不是SQL转义。请修复SQL转义,或者根本不进行SQL转义。字符串一开始可能不应该是SQL转义的。您为什么要回答这些问题?在错误消息中,您可以读到“拒绝访问”…我们真的应该注意SO的质量,否则这一方将死亡:-(@userNOID-我相信
addslashes
在任何情况下都不足以替代
mysql\u real\u escape\u string
。如果必须使用这个旧库,那么也必须使用正确的escape函数。@AmalMurali这个问题与此有什么关系?这是一个权限问题,这是一个简单的非驱动密码,因此PHP正在停止这个问题转义函数的使用不要使用扩展名
mysql.*
使用
PDO
@siride为什么会是wtf?@netmaster-请将错误粘贴为文本,而不是屏幕截图-您可以使用引号
来突出显示它们。如果您使用文本,那么搜索引擎会将有相同问题的人带到这里。@sirid为了正确地转义,它需要知道字符集。相信一些神奇的默认字符集会使它“容易”出错。而且你不希望为了防止漏洞而引入的函数出现这种情况。