mysql_escape_string():不推荐使用此函数;请改用mysql_real_escape_string()

时间:2015-07-19 12:01:50

标签: php mysql codeigniter mysqli codeigniter-3

这是我面临的一个奇怪的问题,我的本地机器运行php 5.6.3而实时服务器运行php 5.4。我们最近将我们的应用程序从codeigniter 2. *更新为codeingiter 3.0,现在在实时服务器上运行时,我们开始了解这个全新的问题(较旧的问题,但仍无法正常工作smtp

  

遇到PHP错误

     

严重程度:8192

     

消息:mysql_escape_string():不推荐使用此函数;改为使用mysql_real_escape_string()。

     

文件名:mysql / mysql_driver.php

     

行号:319

现在,在进行了一些谷歌搜索后,我发现顶级解决方案might be for ci 2.*无法正常工作,因为codeigniter的mysql_drivers.php文件已在使用mysql_real_escape_string()。一个答案是建议我检查database.php文件。如果我的默认连接是mysql而不是mysqli mysqli,那么我现在无法找出问题或我错过的内容。< / p>

2 个答案:

答案 0 :(得分:1)

自从5.5以来,

PHP mysql驱动程序已弃用。 见http://php.net/manual/en/intro.mysql.php

所以你最好不要使用它。使用mysqli

mysql/mysql_driver.php上的第319行: https://github.com/bcit-ci/CodeIgniter/blob/3fe79499c5bedb5b3bc4281821776f031f73674e/system/database/drivers/mysql/mysql_driver.php#L319

没有mysql_escape_string()。您似乎没有正确更新到3.0。

答案 1 :(得分:0)

问题是您有冲突 MySQLMySQLi

要解决您的问题,请使用mysqli_real_escape_string()

您的知识的更多细节

关于mysql_escape_string()

  

警告:
  此函数在PHP 4.3.0中已弃用,将来将删除整个原始MySQL扩展。相反,应该使用MySQLi或PDO_MySQL扩展。另请参阅MySQL:选择API指南和相关的常见问题解答以获取更多信息。该功能的替代方案包括:
  mysqli_escape_string()
  PDO::quote()

关于mysql_real_escape_string()

  

警告:
  自PHP 5.5.0起,此扩展已弃用,将来将被删除。相反,应该使用MySQLi或PDO_MySQL扩展。另请参阅MySQL:选择API指南和相关的常见问题解答以获取更多信息。该功能的替代方案包括:
  mysqli_real_escape_string()
  PDO::quote()