Sql注入和updateall cakephp问题


Sql injection and updateall cakephp issue

当我使用这个查询时,我在cakephp中遇到了一个问题

$this->Rh->CompetencesUser->updateAll(array(
    'CompetencesUser.niveau' => "'$value[1]'",
    'CompetencesUser.expertise' => $value[2],
    'CompetencesUser.rh_id' => $this->Rh->getLastInsertId()
), array(
    'CompetencesUser.user_id' => $this->request->params['pass'][0],
    'CompetencesUser.competence_id' => $value[3]
));

它的工作,但当我给一些字符,如'在字段$value[1]它显示一个错误,所以我如何可以转义这个字符或我可以使用另一种方法,因为$value[1]不添加那些引号不工作。

如文档中所述"文字值应该使用DboSource::value()手动引用。"

例如

: -

$db = $this->Rh->CompetencesUser->getDataSource();
$this->Rh->CompetencesUser->updateAll(
    ['CompetencesUser.niveau' => $db->value($value[1], 'string')],
    [ // Some conditions ]
);

在大多数情况下,updateAll()不是保存数据的正确选择,save()更适合。请看CakePHP 2的updateAll()方法。