2012-03-06 74 views
0

我的Code Igniter应用程序中有一个奇怪的错误。当我调用mysql_real_escape_string时,Code Igniter或PHP会发出此错误。为什么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触发对我的本地主机数据库的访问?不是该函数只是格式化一个字符串?另外,我甚至没有使用我的本地主机数据库。

+1

为什么要在窗体帮助程序中调用'mysql_real_escape_string'以开始? – deceze 2012-03-06 05:52:51

+1

来吧,你有活动记录和参数化查询可用几乎没有努力,你为什么使用该功能?你为什么要在一个帮助器中放置一个DB方法? (理想情况下它应该放在模型中) – 2012-03-06 06:27:28

回答

1

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

+2

请不要在'mysql_real_escape_string'上建议'addslashes'。后者在今天和这个年代已经非常糟糕,“addslashes”更糟。 – deceze 2012-03-06 05:52:10

1

错误说明了一切。

它说它无法连接到你的mysql服务器,无论你提供的凭据和服务器名称!

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

+1

我觉得有必要让人们参考日志? – Karma 2012-09-01 06:18:48

1

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

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

相关问题