为什么PHP试图访问我的localhost数据库?

时间:2012-03-06 05:47:28

标签: php codeigniter

我的Code Igniter应用程序中有一个奇怪的错误。当我调用mysql_real_escape_string时,Code Igniter或PHP会发出此错误。

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  mysql_real_escape_string() [<a href='function.mysql-real-escape-string'>function.mysql-real-escape-string</a>]: Can't connect to local MySQL server through socket '/No-MySQL-hostname-was-specified' (2)</p>
<p>Filename: helpers/formval_helper.php</p>
<p>Line Number: 13</p>

为什么简单地调用mysql_real_escape_string会触发对我的localhost数据库的访问?这个函数不只是格式化一个字符串吗?另外,我甚至没有使用我的localhost数据库。

4 个答案:

答案 0 :(得分:3)

http://php.net/manual/en/function.mysql-real-escape-string.php

在使用mysql_real_escape_string()之前需要MySQL连接,否则会生成级别为E_WARNING的错误,并返回FALSE。如果未定义link_identifier,则使用最后一个MySQL连接。

答案 1 :(得分:1)

mysql_real_escape_string的行为部分取决于某些数据库服务器设置,包括字符集。如果你想要通用的东西,请使用addslashes,但请注意,它会为一些模糊的多字节字符集提供不正确的结果。

答案 2 :(得分:1)

错误说明了一切。

它表示无法使用您提供的任何凭据和服务器名称连接到您的mysql服务器!

在使用此功能之前,您需要先连接到数据库!它对MySql Server有一定的依赖性!

答案 3 :(得分:1)

此函数具有第二个参数link_identifier。 这就是文档所说的:

MySQL连接。如果未指定链接标识符,则假定mysql_connect()打开的最后一个链接。如果没有找到这样的链接,它将尝试创建一个,就好像没有参数调用mysql_connect()一样。如果未找到或建立连接,则会生成E_WARNING级别错误