mysql_real_escape_string在cakephp中不起作用

时间:2015-05-06 10:21:40

标签: cakephp cakephp-2.0 cakephp-1.3 cakephp-2.3 mysql-real-escape-string

mysql_real_escape_string在cakephp中不起作用。 我收到如下错误。 mysql_real_escape_string():拒绝访问用户&root;' @' localhost' (使用密码:否)[APP / Controller / add.php,第123行] 数据库连接:

  <?php

    class DATABASE_CONFIG {

        public $default = array(
            'datasource' => 'Database/Mysql',
            'persistent' => false,
            'host' => 'localhost',
            'login' => 'xyz',
            'password' => 'password',
            'database' => 'xyz',
            'prefix' => '',
            //'encoding' => 'utf8',
        );

        public $test = array(
            'datasource' => 'Database/Mysql',
            'persistent' => false,
            'host' => 'localhost',
            'login' => 'xyz',
            'password' => 'password',
            'database' => 'xyz',
            'prefix' => '',
            //'encoding' => 'utf8',
        );
    }
     ?>




 <?php 
          $price1=implode("'~'",array_map('mysql_real_escape_string',$this->request->data['iupdate']['price']));
    ?>

localhost工作正常,但在服务器上收到错误。

2 个答案:

答案 0 :(得分:2)

我不知道蛋糕php,但恕我直言,你只是不能使用mysql_real_escape_string,因为:

  • 首先,已弃用。

      

    自PHP 5.5.0起,此扩展程序已弃用,将来将被删除。相反,应该使用MySQLi或PDO_MySQL扩展。

  • 其次,根据php doc

      

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

因此,您尝试通过php.ini中设置的值连接到生产服务器,当然,出于安全原因,您无法使用root权限连接。

正如我告诉你的那样:我不知道cakePHP,但我很确定,有一个函数可以逃避字符串,或者更好 - 字符串会自动使用PDO准备语句进行转义

答案 1 :(得分:1)

如果您在安装cakephp 2.0及更多版本时发现了这一点,请更换“登录”#39; =&GT; &#39; xyz&#39;,用&#39;用户名&#39; =&GT; &#39; XYZ&#39;

简单的技巧解决了这一切。