【问题标题】:Connect error with mysql_real_escape_string [duplicate]使用 mysql_real_escape_string 连接错误 [重复]
【发布时间】:2013-01-24 00:05:51
【问题描述】:

当我浏览我的网站时,一切正常。该网站与数据库连接并显示结果。但是,每当遇到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 代码,网站就会运行良好。但是,这是没有道理的。解决这个问题的方法是什么?

【问题讨论】:

  • 你如何使用mysql_real_escape_string()?
  • mysql_real_escape_string() 必须在 mysql_connect() 之后才检查这个
  • mysql_real_escape_string() 需要与 MySQL 数据库服务器建立连接...此时您是否已经连接?
  • 你使用的是什么 PHP 版本?该功能在非常旧的版本中不存在,将在 5.5 中删除
  • 您的网站是在本地还是其他服务器上?

标签: mysql php


【解决方案1】:

要使mysql_real_escape_string 工作,您首先必须通过mysql_connect 连接到MySQL

【讨论】:

    【解决方案2】:

    该错误意味着默认的 mysql 数据库连接未在您的 php.ini 中正确配置。

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

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

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

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

    【讨论】:

      【解决方案3】:

      你用错了这个功能。
      您不是在将它们放入查询之前处理仅字符串值,而是在代码顶部的某处处理所有用户输入值。
      它会引导你进行sql注入

      【讨论】:

        【解决方案4】:

        你是传入mysql_connect返回的连接变量作为第二个参数吗?

        顺便说一句,你真的应该转而使用PDO,如果你使用它的准备函数,它会自动转义字符串。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-07-02
          • 1970-01-01
          • 2018-09-26
          • 2012-12-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多