0

在 MySQL 中,我可以一次执行多个命令,例如:

Select * from Users; Select * from Classes;

从 PHP 调用命令时,我该如何做同样的事情,例如:

$sql=mysqli_query($link, "select * from Users;");
while($rows=mysqli_fetch_array($sql)){
    echo "<div>$rows[0]</div><div>$rows[1]</div>";
}

但是,它不起作用:

$sql=mysqli_query($link, "select * from Users; Select * from Classes");
while($rows=mysqli_fetch_array($sql)){
    echo "<div>$rows[0]</div><div>$rows[1]</div>";
}

我知道在实践中这可能没有必要。考虑一下我需要这个特定的问题来模拟或开发我自己的接口版本,使用 PHP 来管理 MySQL 数据库。

4

3 回答 3

3

您可以通过“multi_query”选项来实现这一点。

$query = "select * from Users;";
$query .= "Select * from Classes";



if (mysqli_multi_query($link, $query)) {
    do {
        /* store first result set */
        if ($result = mysqli_store_result($link)) {
            while ($row = mysqli_fetch_row($result)) {
                printf("%s\n", $row[0]);
            }
            mysqli_free_result($result);
        }
        /* print divider */
        if (mysqli_more_results($link)) {
            printf("-----------------\n");
        }
    } while (mysqli_next_result($link));
}
mysqli_close($link);
于 2013-04-19T05:00:16.687 回答
0

在 MySQL[console]中,我可以一次执行多个命令

是的你可以。

但从技术上讲,它们无论如何都是单独执行的。

因此,随后的 2 次调用mysqli_query()将完全一样。

因此,拨打 2 个电话而不是 1 个电话是没有问题的。特别是因为一次做所有事情没有一点。

尽管您可以使用任何多查询解决方案,但这并没有多大意义,只会让您的代码无缘无故地过于复杂和容易出错。

于 2013-04-19T06:31:09.690 回答
-1

您不能同时运行两个查询,默认情况下,mysql 总是在半列 i 之后进行最后一个查询。它将运行 Select * from Classes。而不是更好地执行这两个查询的联合。

于 2013-04-19T05:44:53.717 回答