【问题标题】:Multiple SQL commands in PHP and MySQL [duplicate]PHP和MySQL中的多个SQL命令[重复]
【发布时间】:2013-04-12 10:10:39
【问题描述】:

在 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 数据库。

【问题讨论】:

  • 使用连接语句。见这里:stackoverflow.com/questions/10610675/…
  • 您必须分别获取两者。
  • 执行两个这样的选择语句会产生什么结果?您将如何检索找到的数据?请认真重新考虑您的问题...一般来说您的方法可能有问题。

标签: php mysql mysqli


【解决方案1】:

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

是的,你可以。

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 请查看php手册中的mysqli_multi_query
    【解决方案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);
    

    【讨论】:

    • 执行 2 个 SELECT 语句和 mysqli_multi_query 确实没有意义,因为您永远无法获取第一个 SELECT 语句的结果。
    • @Jocelyn - 你可以获取我尝试过的两个选择语句的结果,我也得到了结果......
    • @sandy 您如何解决不同的查询?如何将两个结果集分开?
    • 它的“mysqli_more_results”标识不同的查询。在这里,我与完成这项工作的“-----------”分开。并且“mysqli_next_result”会中断多个查询的连接,然后在此语句之后您可以像以前一样使用常规查询...
    • 好的。有趣的。以前从未见过。所以剩下的问题可能是这样做是否有任何优势,而不是两个单独的查询,这将使代码更简单。尤其是当您需要访问结果的字段并且每个查询的字段都不同时。
    猜你喜欢
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多