我想通过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不返回结果集。
我需要做些什么才能正确完成异步调用,以便可以在不发生此错误的情况下进行多次调用?
谢谢凯尔。非常感激。我不确定是否早些时候明白了这一点,但它可能会在稍后为我[和其他人希望]派上用场。干杯。 –
谢谢,@凯尔。这是对这种情况的一个很好的解释。 –