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工作正常,但在服务器上收到错误。
答案 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;
简单的技巧解决了这一切。