0

我正在使用 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";}

我注意到表已成功更新,但我仍然看到“失败”消息。
似乎 $result 的值既不是 True 也不是 False。

我不知道。

4

3 回答 3

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)会以同样的方式工作。

于 2010-08-01T17:51:02.593 回答
1

SQL 上的更新查询返回更新的行数。所以它可能返回一个整数而不是布尔值。

于 2010-08-01T17:49:04.090 回答
1

表更新后,它返回受影响的行号。因此,在查询完成后,如果您调用此函数“mysql_affected_rows”,您将获得受影响的行,如果它大于 0,则表示查询成功执行,如果为 0,则更新未完成..

于 2010-08-01T17:53:13.590 回答