我想通過PHP MySQLi使用異步查詢。PHP MySQLi異步查詢
下面的代碼已經被簡化了,原來代碼太冗長了,因爲類依賴關係和所有這些。還請假設已經設置了連接mysqli_handle
的引用。
$query_1 = "SHOW TABLES FROM moxedo";
$query_2 = "CREATE TABLE `moxedo`.`mox_config_n85ad3` (`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT , `group_id` INT(3) UNSIGNED NOT NULL , `is_enabled` INT(1) UNSIGNED NOT NULL , `tag` VARCHAR(255) NOT NULL , `name` VARCHAR(80) NOT NULL , `value` VARCHAR(255) NOT NULL , `description` TEXT NOT NULL , `init_params` TEXT NOT NULL , `datetime_added` DATETIME NOT NULL , `datetime_lastmodified` DATETIME NOT NULL , `timestamp_univ` BIGINT(14) NOT NULL , PRIMARY KEY (`id`)) ENGINE = INNODB
";
$query_3 = "ALTER TABLE `moxedo`.`mox_config_n85ad3` ADD UNIQUE `ix_u_tag_oq` (`tag`)";
$query_4 = "SHOW TABLES FROM moxedo";
if (!$mysqli_stmt_obj = $mysqli_handle->query($query_1))
{
printf("Error: %s\n", $mysqli_handle->error);
}
if (!$mysqli_stmt_obj = $mysqli_handle->query($query_2, MYSQLI_ASYNC))
{
printf("Error: %s\n", $mysqli_handle->error);
}
if (!$mysqli_stmt_obj = $mysqli_handle->query($query_3, MYSQLI_ASYNC))
{
printf("Error: %s\n", $mysqli_handle->error);
}
if (!$mysqli_stmt_obj = $mysqli_handle->query($query_4))
{
printf("Error: %s\n", $mysqli_handle->error);
}
對查詢1的調用通過OK。對查詢2的調用也會通過OK。
但是,當我嘗試執行查詢3和查詢4時,出現「命令不同步;現在無法運行此命令」錯誤。從我的在線研究中,我找到了一些關於使用mysqli_free_result
但查詢2和Query 3不返回結果集。
我需要做些什麼才能正確完成異步調用,以便可以在不發生此錯誤的情況下進行多次調用?
謝謝凱爾。非常感激。我不確定是否早些時候明白了這一點,但它可能會在稍後爲我[和其他人希望]派上用場。乾杯。 –
謝謝,@凱爾。這是對這種情況的一個很好的解釋。 –