表更新后将返回什么值?

时间:2010-08-01 17:35:45

标签: cakephp cakephp-1.2

我正在使用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的值既不是真也不是假。

我不知道。

3 个答案:

答案 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那么更新没有完成..