PHP和MySQL中的多个SQL命令

时间:2013-04-19 04:56:07

标签: php mysql mysqli

在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数据库来模拟或开发我自己的接口版本。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

  

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

是的,你可以。

技术上无论如何都会单独执行

因此,对mysqli_query()的2次调用将完全相同。

因此,制作2个电话而不是一个电话没有问题。特别是因为没有一点可以一次完成。

尽管可以使用任何多查询解决方案,但它没有多大意义,只是让您的代码过于复杂且容易出错。

答案 2 :(得分:-1)

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