2014-03-04 58 views
1
if($stmt = $this->Sys->db->prepare("INSERT INTO dj_videos (title, url, caption) VALUES (?, ?, ?)")) { 

     $stmt->bind_param('sss', $title, $url, $comment); 
     $stmt->execute(); 
     $stmt->store_result(); 
     $stmt->fetch(); 

     if($stmt->num_rows == 1) { 

      return TRUE; 

     } 
     else { 

      return FALSE; 

     } 

這是返回false,但它將信息插入到數據庫中每次。它打動了我的想法。這是返回false

回答

0

mysqli_stmt::execute返回TRUE或FALSE的成功失敗插入。 所以你只需要返回它的結果:

if($stmt = $this->Sys->db->prepare("INSERT INTO dj_videos (title, url, caption) VALUES (?, ?, ?)")) { 
    $stmt->bind_param('sss', $title, $url, $comment); 
    return $stmt->execute(); 
} 

順便說一句,如果該語句是UPDATEDELETE,或INSERT,受影響的行的總數可以通過使用mysqli_stmt_affected_rows()函數來確定。

+0

太棒了。謝謝。你每天學習新的東西 :) – user3377300

0

num_rows返回語句結果集中的行數。

你想affected_rows,它返回的行數更改,刪除,或由最後執行的語句

$stmt->bind_param('sss', $title, $url, $comment); 
    $stmt->execute(); 
    $stmt->store_result(); 
    $stmt->fetch(); 

    if($stmt->affected_rows == 1) { 

     return TRUE; 

    } 
    else { 

     return FALSE; 

    }