即使没有更新行,mysql_affected_rows()也始终返回1

hap*_*dik 5 mysql row count

我想要做的是:(以编程方式)

更新状态,其中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;  }
Run Code Online (Sandbox Code Playgroud)

此代码返回1.

rae*_*kid 4

这是因为true如果您使用 ,则会打印为“1” echo。为了调试,尝试使用var_dump(),或者让你的函数返回 0 (在我看来,在这种情况下,这是更好的选择)。

一张小纸条;我认为您应该尝试使您的代码更具可读性(如果您问题中的代码与文件中的代码具有相同的布局)。尝试缩进代码块,使用单独的行来关闭大括号,等等......