【问题标题】:Troubleshooting "Can't connect to local MySQL server through socket" when calling mysql_real_escape_string() [duplicate]调用 mysql_real_escape_string() 时“无法通过套接字连接到本地 MySQL 服务器”故障排除 [重复]
【发布时间】:2011-01-30 03:16:50
【问题描述】:

我收到错误:

警告:mysql_real_escape_string() [function.mysql-real-escape-string]: 无法通过套接字'/var/run/mysqld/mysqld.sock' (2) 连接到本地 MySQL 服务器

为什么会出现此错误? mysql_real_escape_string() 可以在我的所有页面上运行,除了一个? MySQL与PHP服务器位于不同的服务器上是否与此有关 - 如果是,我该如何解决?

$fname = $_POST['fname'];
$fname = stripslashes($fname);
$fname = mysql_real_escape_string($fname);

【问题讨论】:

  • 你能把有问题的代码贴出来吗?
  • @Tom 为什么在 mysql_real_escape_string() 之前调用 stripslashes($fname)?

标签: php mysql


【解决方案1】:

这是因为您在使用mysql_real_escape_string() 之前从不调用mysql_connect()

为了使用mysql_real_escape_string(),PHP 必须连接到数据库。为了连接到数据库,您必须使用mysql_connect()

【讨论】:

  • 出于好奇,为什么需要调用数据库来执行那个函数?
  • PHP代码调用MySQL的库函数对字符串进行转义,所以代码调用库函数必须先连接。
  • 它调用一个 MySQL 库函数来进行转义。它不是直接在 PHP 中完成的。
  • @Spencer 好问题。这是因为转义取决于服务器使用的字符集(见dev.mysql.com/doc/refman/5.1/en/mysql-real-escape-string.html
猜你喜欢
  • 2011-01-12
  • 2019-07-03
  • 2017-01-21
  • 2013-03-04
  • 2020-11-14
  • 2017-10-07
  • 2013-02-17
  • 1970-01-01
相关资源
最近更新 更多