2016-09-01 43 views
0

我想避免插入重複日期到我的分貝。所以我寫了一個名爲avoid_redundant()的函數。這個函數必須檢查數據是否存在。當它存在時返回false並阻止插入。我在互聯網上挖掘,以找出爲什麼mysqli_affected_rows()返回-1,但發現有關查詢。我的查詢沒問題。我很困惑。返回-1當我運行mysqli_affected_rows

這裏是我的簡單代碼。

<?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_qurey($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..... 
} 

?> 
+0

您可以嘗試重新閱讀PHP手冊中的mysqli_affected_rows()函數描述嗎? –

+0

@YourCommonSense。你爲什麼給一個不好的印記?我再讀一遍。我的問題是什麼? –

+0

嘗試再讀一遍。實際上只有很少的讀數,幾乎沒有幾個字。 –

回答

1

你還沒有做任何查詢影響數據庫。

檢查,如果任何結果從一個SELECT查詢返回的相關功能是:

mysqli_num_rows() 

話雖這麼說,你真的應該考慮創建的表中的唯一鍵定義一個唯一的行和使用MySQL選項ON DUPLICATE KEY UPDATE而不是使用你製造的那種functin。

+0

我使用mysqli_num_rows(),但由於某些原因,我不知道,對於一些數據,它返回'0',儘管它存在於mytbl –

+0

該手冊說,當它是一個mysqli_affected_rows()時,它就像'mysqli_num_rows() 'SELECT'查詢。所以它應該工作。 – Barmar

+0

打印實際查詢並確保它實際上在phpMyadmin/workbench中返回數據 – Mutale

相關問題