2011-01-26 79 views
8

我通過mysqli :: multi_query運行了多個刪除操作,並且它弄亂了行中的下一個查詢。被拋出。「命令不同步;你現在不能運行這個命令」 - 由mysqli :: multi_query導致

Error - SQLSTATE HY000. 
Sql error: Commands out of sync; you can't run this command now 

我是否需要以某種方式清除多查詢,以免它混淆我的下一個查詢?這個錯誤的原因是什麼?

這就是我如何運行我multiquery

function deleteSomeTables($args){ 
    $sql = 'delete 1;delete another;'; 
    if($database->multi_query($sql)){ 
    return true; 
    }else{ 
    return false; 
    } 
} 

我使用的是最新的XAMPP版本的Windows 7

回答

10

使用mysqli::multi_query你發射了查詢,但你需要處理在繼續前,這些查詢的結果。 documentation page描述了處理結果的各種方式。一旦處理完畢,您將可以正常執行其他查詢。

你遇到的錯誤信息實際上是在頁面上對mysqli::query更好解釋的(儘管要記住mysqli :: query在這個實例中不會返回結果對象,因爲你正在執行刪除操作)。

你當然可以改變multi_query多個單一查詢,我不知道每種方法的優點/缺點是什麼。

+3

那麼,如何清除查詢,因爲我沒有得到任何東西回來。你實際上沒有告訴我任何我不知道的東西。 – andrew 2011-02-04 01:40:41

9

幫我刪除「命令不同步」的錯誤:

do { 
    $mysqli_conn_obj->use_result(); 
}while($mysqli_conn_obj->more_results() && $mysqli_conn_obj->next_result()); 

添加該代碼只是打電話multi_query後,它將使用結果集和解決錯誤。

-1

塞瓦的代碼將最有可能解決您的問題,如果你使用的程序的風格和我一樣,用這個

do { 
    if ($result = mysqli_store_result($connect)) { 
    mysqli_free_result($result); 
    } 
} while (mysqli_next_result($connect)); 
相關問題