-1

我想用 cakePHP 语法编写这个 SQL 语句:

UPDATE students SET status = 'graduated' WHERE age = '23' AND major = 'math';

现在,我试图在蛋糕中做到这一点的方式是

$student->updateAll(  array('Student.status' => "'".$rowdata."'"), 
          array('Student.age' => $current_highest_age,'Student.major' =>
                    "'".$major."'"));

我的变量: $rowdata = 'graduated'; $current_highest_age = 23; 和 $major = '数学'。

该表未更新。我的语法有问题吗?我会感谢你的帮助。

问题更新:

实际上,我发现了我的语法错误的地方。蛋糕代码应该'Student.major' => $major'Student.major'=>"'".$major."'"

4

3 回答 3

3

你是双重逃避

updateAll期望字段是 SQL 表达式(或简单引用的字符串),但条件不应该是。因此,您现在要生成的查询是:

UPDATE 
    students
SET
    status = 'graduated' 
WHERE 
    age = '23' AND 
    major = '\'math\''

为了防止额外的引号导致语法有效的语句匹配 0 行,只需让 Cake 像其他方法一样为您处理您的条件:

$student->updateAll(
    array('Student.status' => "'".$rowdata."'"), 
    array(
        'Student.age' => $current_highest_age,
        'Student.major' => $major
    )
);
于 2013-06-11T21:57:23.323 回答
0

更新模型字段的简单方法

$this->Testing->updateAll(
    array('Testing.door_open_close' => $door_open_close),   // value that is updated                  
    array('Testing.id' => $zoneId)     // condition field of a Model
);
于 2017-09-18T10:39:43.283 回答
-2
UPDATE students ...
       ^^^^^^^^--- student WITH an S

对比

array('Student.age')
       ^^^^^^^  - student WITHOUT an S
于 2013-06-11T21:47:48.277 回答