>  기사  >  백엔드 개발  >  PHP 데이터베이스를 학습할 때 여러 SQL 명령을 한 번에 실행하는 방법은 무엇입니까?

PHP 데이터베이스를 학습할 때 여러 SQL 명령을 한 번에 실행하는 방법은 무엇입니까?

WBOY
WBOY원래의
2021-10-27 18:10:064552검색

이전 글에서는 "PHP에서 SQL 쿼리 결과를 얻는 일반적인 함수(자세한 예)"를 소개했는데, 여기서는 PHP에서 데이터베이스를 쿼리할 때 일반적으로 사용되는 여러 함수를 자세히 소개했습니다. 한 번에 여러 SQL 명령을 실행하는 방법. 모두에게 도움이 되기를 바랍니다!

PHP 데이터베이스를 학습할 때 여러 SQL 명령을 한 번에 실행하는 방법은 무엇입니까?

지난 기사에서는 서로 다른 함수를 통해 데이터를 쿼리하면 서로 다른 형식을 반환하는 일반적인 함수를 소개했습니다. mysqli_query() 함수는 한 번에 하나의 SQL 명령만 실행할 수 있습니다. 코드가 한 번에 여러 SQL 명령을 실행할 수 있도록 하는 PHP의 함수, 즉 mysqli_multi_query() 함수를 살펴보겠습니다.

<strong><span style="font-size: 20px;">mysqli_multi_query()</span></strong> 함수<strong><span style="font-size: 20px;">mysqli_multi_query()</span></strong> 函数

在我们前面介绍的 mysqli_query() 函数的时候,运行该函数每次只能执行一条SQL命令,但是想要执行多条SQL命令的时候,mysqli_query() 函数就不能满足我们了,这时候我们就需要通过mysqli_multi_query() 函数来实现一次执行多条 SQL 命令。

mysqli_multi_query() 函数的语法格式如下:

mysqli::multi_query(string $query)

这是面向对象的写法,下面是面向过程的写法:

mysqli_multi_query(mysqli $link, string $query)

其中需要注意的是:

  • $query  表示为要查询的 SQL 语句

  • $link  表示为使用 mysqli_connect() 函数返回的链接标识

  • $query   表示参数,其中可以包含多条 SQL 命令,每条 SQL 命令之间使用分号;分隔。如果第一条 SQL 命令在执行时没有出错,那么这个函数就会返回 TRUE,否则将返回 FALSE。

接下来我们通过示例来看一下mysqli_multi_query() 函数的使用,来执行多条SQL命令,示例如下:

<?php
    $host     = &#39;localhost&#39;;
    $username = &#39;root&#39;;
    $password = &#39;root&#39;;
    $dbname   = &#39;test&#39;;
    $mysql    = new Mysqli($host, $username, $password, $dbname);
    if($mysql -> connect_errno){
        die(&#39;数据库连接失败:&#39;.$mysql->connect_errno);
    }else{
        $sql    = &#39;select id,name from user;&#39;;  // SQL 语句
        $sql    .= &#39;select sex,age from user&#39;;  // SQL 语句
        if($mysql -> multi_query($sql)){
            do{
                if ($result = $mysql -> store_result()) {
                    while ($row = $result->fetch_row()) {
                        print_r($row);
                    }
                    $result->free();
                }
                if ($mysql -> more_results()) {
                    echo &#39;<hr>&#39;;
                }else{
                    break;
                }
            } while ($mysql -> next_result());
        }
        $mysql -> close();
    }
?>

输出结果:

PHP 데이터베이스를 학습할 때 여러 SQL 명령을 한 번에 실행하는 방법은 무엇입니까?

上述结果通过mysqli_multi_query() 函数完成了执行多条SQL命令,

其中我们需要注意的是:

因为 mysqli_multi_query() 函数能够连接执行一个或多个查询,而每条 SQL 命令都可能返回一个结果,在必要时需要获取每一个结果集。所以对该函数返回结果的处理也有了一些变化,第一条查询命令的结果要用 mysqli_use_result() mysqli_store_result() 函数来读取。

也可以使用 mysqli_store_result() 函数将全部结果立刻取回到客户端,而且这么做的效率更高。另外,可以使用mysqli_more_results() 函数检查是否还有其他结果集。

如果想对下一个结果集进行处理,可以使用 mysqli_next_result() 函数获取下一个结果集,有下一个结果集时该函数返回 TRUE,没有时返回 FALSE,在有下一个结果集的情况下,也需要使用  mysqli_use_result()mysqli_store_result()

앞서 소개한 mysqli_query() 함수에서는 이 함수를 실행할 때 한 번에 하나의 SQL 명령만 실행할 수 있지만 여러 개의 SQL 명령을 실행할 때 mysqli_query() 함수로는 만족할 수 없습니다. 이때 여러 개의 SQL 명령을 동시에 실행하려면 mysqli_multi_query() 함수를 사용해야 합니다.

mysqli_multi_query() 함수 구문 형식은 다음과 같습니다.

<?php
    $host     = &#39;localhost&#39;;
    $username = &#39;root&#39;;
    $password = &#39;root&#39;;
    $dbname   = &#39;test&#39;;
    $link     = @mysqli_connect($host, $username, $password, $dbname);
    if($link){
        $sql    = &#39;select id,name from user;&#39;;  // SQL 语句
        $sql    .= &#39;select sex,age from user&#39;;  // SQL 语句
        $result = mysqli_multi_query($link, $sql);        // 执行 SQL 语句,并返回结果
        do{
            if($data = mysqli_use_result($link)){
                while ($row = mysqli_fetch_row($data)) {
                    print_r($row);
                }
                mysqli_free_result($data);
            }
            if(mysqli_more_results($link)){
                echo &#39;<hr>&#39;;
            }else{
                break;
            }
        } while (mysqli_next_result($link));
        mysqli_close($link);
    }else{
        echo &#39;数据库连接失败!&#39;;
    }
?>

이것은 객체 지향 작성이고, 다음은 프로세스 지향 작성입니다.

rrreee주의할 점은 :

  • 🎜$query는 쿼리할 SQL 문을 나타냅니다🎜
  • 🎜 $link는 mysqli_connect() 함수에 의해 반환된 링크 식별자를 나타냅니다. 🎜
  • 🎜$query는 여러 SQL 명령을 포함할 수 있는 매개 변수를 나타냅니다. 각 사이에 세미콜론을 사용합니다. SQL 명령 ;가 구분되어 있습니다. 이 함수는 첫 번째 SQL 명령이 오류 없이 실행되면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다. 🎜
🎜다음으로, 여러 개의 SQL 명령을 실행하기 위한 mysqli_multi_query() 함수의 사용법을 살펴보겠습니다. 🎜rrreee🎜출력 결과: 🎜🎜🎜PHP 데이터베이스를 학습할 때 여러 SQL 명령을 한 번에 실행하는 방법은 무엇입니까?🎜🎜위 결과는 다음을 통해 완성됩니다. mysqli_multi_query() 함수는 여러 SQL 명령을 실행합니다. 🎜🎜우리가 주의해야 할 점은: 🎜🎜 mysqli_multi_query() 함수는 다음에서 하나 이상의 쿼리를 실행할 수 있기 때문입니다. 각 SQL 명령은 각각 결과를 반환할 수 있으며 필요할 때 각 결과 집합을 가져와야 합니다. 따라서 이 함수에서 반환된 결과 처리에 일부 변경이 있었습니다. 첫 번째 쿼리 명령의 결과는 mysqli_use_result() 또는 mysqli_store_result() 를 사용하여 읽어야 합니다. > 기능. 🎜🎜또한 mysqli_store_result() 함수를 사용하여 모든 결과를 클라이언트에 즉시 다시 가져올 수 있으며 이것이 더 효율적입니다. 또한 mysqli_more_results() 함수를 사용하여 추가 결과 세트가 있는지 확인할 수 있습니다. 🎜🎜다음 결과 세트를 처리하려면 mysqli_next_result() 함수를 사용하여 다음 결과 세트가 있으면 TRUE를 반환하고, 다음 결과 세트가 있으면 FALSE를 반환합니다. 결과 세트의 경우 mysqli_use_result() 또는 mysqli_store_result() 함수를 사용하여 결과 세트의 내용을 읽어야 합니다. 🎜🎜위는 객체지향 방식입니다. 다음으로 프로세스 지향 방식을 살펴보겠습니다. 🎜rrreee🎜출력 결과는 위 결과와 동일하므로 mysqli_multi_query()를 사용할 수 있습니다. 한 번에 여러 SQL 명령을 완료하는 기능입니다. 🎜🎜관심이 있으시면 "🎜PHP 비디오 튜토리얼🎜"을 클릭하여 PHP 지식에 대해 자세히 알아볼 수 있습니다. 🎜

위 내용은 PHP 데이터베이스를 학습할 때 여러 SQL 명령을 한 번에 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.