【问题标题】:mysql_real_escape_string is not working in cakephpmysql_real_escape_string 在 cakephp 中不起作用
【发布时间】:2015-05-06 10:21:39
【问题描述】:

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 它工作正常,但在服务器中出现错误。

【问题讨论】:

  • 没有代码 -> 没有答案
  • $name1=implode("'~'",($this->request->data['update']['name']));
  • 我们还需要关于您的数据库连接的代码。
  • 连接是否已经配置并建立?
  • 是的,在 localhost 中它工作正常,但在服务器中它不工作。显示错误.. 那也是我编写代码 mysql_real_escape_string 部分的地方。

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


【解决方案1】:

我不知道cake php,但恕我直言,你不能使用mysql_real_escape_string,因为:

  • 首先,它已被弃用。

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

  • 其次,根据php doc

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

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

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

【讨论】:

  • CakePHP 有一个 ORM 可以完全解决这个问题。我什至不知道他为什么要尝试使用该功能,这完全违背了几乎每个框架都带有 ORM 或其他类型的 DB 抽象层的想法。
  • @burzum 是否有任何等效于 mysql_real_escape_string 在 CakePHP 中使用,我需要过滤数据以便可以将其传递给 curl 请求?我正在使用 3.1 版本,我想将不得不使用 Sanitize 库。
  • 阅读 php 手册关于 mysql_real_escape_string 和谷歌的函数名称。您落后了 ,它已被弃用,不应再使用。
【解决方案2】:

如果您在安装 cakephp 2.0 及更高版本时发现此问题,请将 'login' => 'xyz' 替换为 'username' => 'xyz'。

简单的技巧解决所有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    相关资源
    最近更新 更多