我正在使用cakePHP 1.26
我试图使用以下代码行更新表:
$c = "helloworld";
$q="UPDATE user SET avatar='{$c}' WHERE user_id='999999'";
$result=$this->Test->User->query($q);
if($result==true){echo "success";}
else{echo "failed";}
我注意到Table已成功更新,但我仍然看到“失败”消息
似乎$ result的值既不是真也不是假。
我不知道。
答案 0 :(得分:3)
query()
从SQL查询返回结果集。你不会获得成功与失败的结果。也就是说,你可能不应该使用query()
。这有一个功能;它被称为saveField()
,它在失败时返回false。
$this->Test->User->id = 999999;
$result = $this->Test->User->saveField('avatar', $c);
if ($result !== false) echo "success";
else echo "failed";
如果您坚持使用query()
,则没有理由去另一个模型。它只是执行SQL查询。这和你写的一样有效:
$this->query($q);
顺便说一下,if ($result == true)
是多余的,通常被视为不良形式。只需if ($result)
即可。
答案 1 :(得分:1)
SQL的更新查询返回更新的行数。所以它可能会返回一个不是bool的整数。
答案 2 :(得分:1)
表更新后,它返回受影响的行号。 所以在你的查询完成之后如果你要调用这个函数“mysql_affected_rows”你会得到受影响的行,如果它大于0则意味着查询成功完成,如果它是0那么更新没有完成..