-4

当我浏览我的网站时,一切正常。该网站与数据库连接并显示结果。但是,每当遇到此错误时,我都会收到此错误mysql_resl_escape_string

mysql_real_escape_string() [function.mysql-real-escape-string]: 无法通过socket '/var/lib/mysql/mysql.sock' (2) in......

请注意,一旦我从每个页面中删除 mysql_real_escape_string 代码,该网站就会运行良好。但是,这是没有道理的。这件事有什么解决办法?

4

4 回答 4

1

为了mysql_real_escape_string工作,您首先必须通过以下方式连接到 MySQLmysql_connect

于 2013-02-08T09:02:25.283 回答
0

该错误意味着默认的 mysql 数据库连接未在您的php.ini.

您可能会mysql_real_escape_string在没有先连接到数据库的情况下使用,在这种情况下 PHP 会尝试使用默认配置从php.ini.

在您的情况下,这些默认设置效果不佳,仅此而已。

更改配置并且错误消失 - 或 - 提供有效的 mysql 数据库连接作为mysql_real_escape_string函数调用的参数。

附加说明:如果您正在编写新代码,请删除mysql_*访问 mysql 数据库的函数。选择MysqliPDO代替。

于 2013-02-08T09:03:08.703 回答
0

您传入从 mysql_connect 返回的连接变量作为第二个参数?

附带说明一下,您真的应该转而使用PDO,如果您使用它的 prepare 函数,它会自动转义字符串。

于 2013-02-08T09:05:04.857 回答
-1

您以错误的方式使用此功能。
您不是在将字符串值放入查询之前仅处理它们,而是在代码顶部的某处处理所有用户输入值。
它将引导您进行 sql 注入

于 2013-02-08T09:04:39.377 回答