php中affected_rows 返回-1 的坑

遇到一个问题,发现一个坑
下面是 php 中与 mysql 的交互

工具类
class sqlTools{
...
public function db_delete($sql){
        $conn = $this->connect();
        $conn->query($sql);
        return $conn->affected_rows?$conn->affected_rows :FALSE;
    }

...

}

实现类
class impl{
...

function delete($str){
    $sql = "delete from chaper where".$str;
    return $this->impl->db_delete($sql);
  }
...


}

应用
function del0($id){
    //来自function0页面,对章节chaper表的操作
    $str = "id=".$id;
    echo $str;
    if(factory::chaper()->delete($str)){
        echo "success";
    }else{
        echo "failed";
    };
}

执行 del0() 这个函数 返回结果为 success 但是刷新页面,数据库中还是存在本该删除的数据,
说明删除并没有success
然后顺藤摸瓜 ,试着打印 sqlTool类中函数 db_delete() 的 return 发现返回值是 -1 ,意味着之后的 success 是这个 -1 带来的。。。
在判断操作成功与否还得谨慎
返回-1是因为 where 后少 空格
$sql = “delete from chaper whereid=1”

你可能感兴趣的:(php)