Sql注入和updateall cakephp问题

时间:2015-08-18 09:38:31

标签: php cakephp

当我使用此查询时,我遇到了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]没有没有添加这些引号就可以工作。

1 个答案:

答案 0 :(得分:3)

the docs&#34中所述;应使用DboSource :: value()手动引用文字值。"

例如: -

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

在大多数情况下,updateAll()不是保存数据的正确方法选择,save()会更适合。看看Use CakePHP 2's updateAll() Method with Caution!