当我运行mysqli_affected_rows

时间:2016-09-01 07:57:34

标签: php mysqli

我想避免在我的数据库中插入重复的日期。所以我写了一个名为avoid_redundant()的函数。此函数必须检查数据是否存在。当它存在时返回false并阻止插入。我正在网上挖掘,找出为什么mysqli_affected_rows()返回-1但查找查询。我的查询还可以。我很困惑。

这是我的简单代码。

<?php

class Database{
      private username;
      private pass;
      private database;
      private server;

     public function __constructor(){
          $this->username='root';
          $this->pass='';
          $this->database='myDb';
          $this->server='localhost';
     }
    public function init(){
          $link=mysqli_connect($this->server,$this->username,$this->pass,$this->database) or die('unable to connect'. mysqil_error());
          if ($link)
              return $link;
    }

    public function avoid_redundant($title,$desc){
          $link=$this->init();
          $query='SELECT * FROM mytbl WHERE title LIKE "%'.$title.'%" AND desc LIKE "%'.$desc.'%"';
          $result=mysqli_query($link,$query) or die(mysqli_error());
          $row=mysqli_affected_rows($link);
          if($row>0)
            return FALSE;
            return TRUE;
    }

}
// IN THE MAIN 


$db= new Database();
$title=mysqli_real_escape_string(//mytitle);
$desc=mysqli_real_escape_string(//mydescription);
if($db->avoid_redundat($title,$desc)){
   //do the rest.....
}

?>

1 个答案:

答案 0 :(得分:1)

您尚未发出任何影响数据库的查询。

检查SELECT查询返回的结果是否相关的函数是:

mysqli_num_rows()

话虽如此,你真的应该考虑在表中创建一个唯一的键来定义一个唯一的行并使用Mysql选项ON DUPLICATE KEY UPDATE而不是使用你制作的那个功能。