2015-04-23 79 views
0

我有以下代碼:stmt->預處理語句affected_rows返回0,但查詢工作

try { 
    $dbc = new PDO('mysql:dbname=database;host=127.0.0.1;charset=utf8', 'root', 'password'); 

    $dbc->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    $dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $stmt = $dbc->prepare("DELETE FROM GRUP WHERE `id_hash_group` = '9d7b04e242a2ce8b5eecce2159200853'"); 
    $stmt->execute(); 
    printf("deleted rows: %d\n", $stmt->affected_rows); 
} 
catch(PDOException $e){ 
    echo json_encode(array('codi'=>311, "msg"=>$e->errorInfo[2])); 
    die(); 
} 

查詢工作正常,但事實證明,該代碼$stmt->affected_rows總是返回0。我曾嘗試把$stmt->store_result()在它之前,但我得到的是500服務器錯誤。我也嘗試使用另一個用戶(我讀過的地方是root用戶可能會導致麻煩)以及代碼的很多變體,比如刪除try/catch塊。

還有一些帖子提出了類似的問題,但他們都沒有幫助我。有人知道在代碼中是否有任何錯誤,或者它是否是Mysqli錯誤?

感謝

+0

'affected_rows()'和'store_result()''是和mysqli_'不PDO功能。 –

回答

0

要得到行號刪除您使用rowCount和閱讀說明書rowCount

$count = $stmt->rowCount();