2013-10-18 25 views
-1
public function deleteComment($id, $check_author = true) { 
     $q = $this -> database -> prepare("SELECT `id`, `aid` FROM `addon_comments` WHERE `id` = :id"); 
     $q -> execute(array('id' => $id)); 

     if(!$q -> rowCount()) 
      return -1; 

     $r  = $q -> fetch(); 
     $uid = $this -> registry -> getClass('Users') -> isLogged(); 

     if($check_author && $r[ 'aid' ] != $uid) 
      return -2; 


     $s = $this -> database -> prepare("DELETE FROM `addon_comments` WHERE `id` = :id OR `parent` = :id"); 
     $s -> execute(array('id' => $id)); 

     return 1;   
    } 

函數返回給我-1,但行被查詢刪除。當我評論刪除查詢時,一切正常(funcion返回1)。 。 我做錯了什麼?刪除之前的PDO rowCount()返回null,當查詢鍵存在時

+2

那些whitespaces傷害了我的眼睛'$ object - > execute(「asd」,array())':( – vikingmaster

+0

我沒有看到任何方式它可以返回'-1'並且還刪除行。執行,功能停止。 – Barmar

+0

我剛看到名字,我道歉:) – Luke

回答

0

如果行被成功選中下面你的代碼將返回true:

if($q -> rowCount()) 
    return -1; 

,如果你想檢查陰性結果,我建議,併爲它返回-1,用途:

if($q->rowCount() < 1) 
    return -1; 
+0

這不是那個..它就像函數rowCount()返回刪除查詢後的行數。 – Wojciech

+0

不,它不只是'DELETE'查詢。它適用於UPDATE,INSERT和SELECT,如果你使用MYSQL。 [這是在rowCount()的文檔的第一個框中提到的(http://php.net/manual/en/pdostatement.rowcount.php)。如果是這樣的話,爲什麼在插入後立即使用它? – Luke

+0

你不明白我..我的功能行爲就像返回數據庫中的行數,執行刪除查詢後.. – Wojciech