参考了http://blog.csdn.net/weixinkaifa/article/details/28611313 这位兄台的博客;
在做一个系统的时候,发现数据库中有个字段经常会出现空的情况,最后查到mysql_real_escape_string这个函数中。
那为什么mysql_real_escape_string会返回false呢?
查手册可以发现其第二个参数是一个数据库的连接标识,当数据库没有连接或失败时,这个函数也会返回false;
并且php发出警告:PHP Warning: mysql_real_escape_string(): A link to the server could not be established;
那为什么在开发机上测试没问题呢?
假如你的开发机上没有mysql,那么也会返回false;
假如装了mysql,其php.ini里面默认的mysql_connect连接的host是localhost,post是3306,并且username 使用的是服务器进程所有者的用户名(比如我新建了一个test.php,假如我用root来运行这个php,则username 用的就是root;假如我用www来运行这个php,则username使用的是www),password默认为空;(参考php.net的mysql_connect说明)
查看mysql数据库中的user表,里面确实有个localhost,用户名和密码都为空的mysql用户;
后续:
发现运行一段时间后又出现返回false的情况,太奇怪了,能确定最近的Mysql连接是成功的。现在就是直接指定了第二个参数,看效果如何