我要做的是:(以编程方式)
更新状态,其中id是什么,如果没有更新的行,则给出错误:我们找不到具有id的记录,否则给消息成功。
这里我使用mysql_affected_rows()来了解行是否已更新,但它总是返回1,因此即使没有更新行,用户也会收到成功消息。
谁能告诉我它会是什么?
以下是代码:
function update_sql($sql) {
$this->last_query = $sql;
$r = mysql_query($sql);
if (!$r) {
$this->last_error = mysql_error();
return false;
}
$rows = mysql_affected_rows();
if ($rows == 0) return true; // no rows were updated
else return $rows; }
此代码返回1.
答案 0 :(得分:4)
这是因为如果您使用true
,echo
将打印为“1”。对于调试尝试使用var_dump()
,或让你的函数返回0(在我看来,这是更好的选择)。
一个小小的说明;我认为您应该尝试使您的代码更具可读性(如果您的问题中的代码与您文件中的代码具有相同的布局)。尝试缩进代码块,使用单独的行来关闭大括号等等......
答案 1 :(得分:2)
这只是猜测...
也许你的功能可以作为例外工作?也许这段代码if ($rows == 0) return true;
工作正常,并返回true
,但您将该值视为整数(布尔值true可以显示为1)?执行:var_dump(uddated_sql('YOUR QUERY'))
并检查它是返回布尔值true还是整数1值。