2010-01-13 140 views
1

有人能告訴我我做錯了什麼嗎?在行被刪除後,我無法得到受影響的行。即使已執行刪除操作,該函數始終返回int(0)。我讀了我需要清除或關閉我已完成的結果的地方,但仍然無效。調試顯示此錯誤:命令不同步。該手冊指出,爲了克服這個問題,必須使用$ result-> free。在我的情況下,它不起作用。mysqli沒有返回受影響的行

$res = db::query("CALL deleteUser('$phone')"); 

    if($res !== 1) { 
     echo 'failed'; 
    } else { 
     echo 'success'; 
    } 

這是查詢完成其功能的部分功能。

if(self::$instance->query($query) === false){ 
     throw new exception("Failed"); 
    } return self::$instance->affected_rows; 
+0

爲什麼不只是選擇相同的條件,並在刪除前回顯它們? – CheeseConQueso 2010-01-13 21:48:03

回答

1

當調用一個存儲過程或函數的int(0)被指出的是,存儲的過程退出而沒有任何錯誤。您需要選擇存儲過程中受影響的行數,然後讓存儲過程通過輸出變量返回受影響的行。

+0

pygorex1,實際上有一個與之相關的錯誤。它聲明這個命令不能在這個時候運行;命令不同步。另外,我明白過程不能輸出布爾值。這是真的? – Bebo 2010-01-13 03:21:11

0

當執行在PHPMySQL的存儲過程,在若干情況下有額外的數據從你尚未檢索服務器發送。這將導致「命令不同步」錯誤。我不記得確切的原因,但很久以前我在MySQL論壇上讀到了這個。你可以用這樣的東西清理你的結果數據:

while (self::$instance->next_result()) { } 
+0

謝謝。我從來不清楚到底把它放在哪裏。這應該高於回報stmt,對嗎? – Bebo 2010-01-13 03:41:49

相關問題