Maison  >  Article  >  développement back-end  >  Comment exécuter plusieurs commandes SQL à la fois lors de l’apprentissage de la base de données PHP ?

Comment exécuter plusieurs commandes SQL à la fois lors de l’apprentissage de la base de données PHP ?

WBOY
WBOYoriginal
2021-10-27 18:10:064552parcourir

Dans l'article précédent, nous vous avons présenté "Fonctions courantes pour obtenir des résultats de requêtes SQL en PHP (exemples détaillés)", qui a présenté en détail plusieurs fonctions couramment utilisées lors des interrogations de bases de données en PHP. Dans cet article, nous jetons un coup d'œil à. comment exécuter plusieurs commandes SQL à la fois. J'espère que cela aidera tout le monde !

Comment exécuter plusieurs commandes SQL à la fois lors de l’apprentissage de la base de données PHP ?

Dans l'article précédent, nous vous avons présenté les fonctions courantes pour obtenir les résultats d'une requête SQL. L'interrogation de données via différentes fonctions renvoie différentes formes. L'exécution de la fonction mysqli_query() ne peut exécuter qu'une seule commande SQL à la fois. une fonction en PHP qui permet au code d'exécuter plusieurs commandes SQL à la fois, c'est la fonction mysqli_multi_query(). Jetons ensuite un coup d'œil à la fonction mysqli_multi_query().

<strong><span style="font-size: 20px;">mysqli_multi_query()</span></strong> Fonction<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();
    }
?>

输出结果:

Comment exécuter plusieurs commandes SQL à la fois lors de l’apprentissage de la base de données PHP ?

上述结果通过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()

Dans la fonction mysqli_query() que nous avons introduite plus tôt, vous ne pouvez exécuter qu'une seule commande SQL à la fois lors de l'exécution de cette fonction, mais vous souhaitez exécuter plusieurs Lors de l'exécution de plusieurs commandes SQL, la fonction mysqli_query() ne peut pas nous satisfaire. Pour le moment, nous devons utiliser la fonction mysqli_multi_query() pour exécuter plusieurs commandes SQL en même temps.

mysqli_multi_query() Le format de syntaxe de la fonction est le suivant :

<?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;;
    }
?>

Il s'agit d'une écriture orientée objet, et ce qui suit est une écriture orientée processus :

rrreeeCe qu'il faut noter est :

  • 🎜$query représente l'instruction SQL à interroger🎜
  • 🎜 $link représente L'identifiant de lien renvoyé par la fonction mysqli_connect() 🎜
  • 🎜$query représente des paramètres, qui peuvent contenir plusieurs commandes SQL. Utilisez un point-virgule entre chacun. Commande SQL ; séparée. Cette fonction renvoie VRAI si la première commande SQL est exécutée sans erreur, sinon elle renvoie FAUX. 🎜
🎜Ensuite, regardons l'utilisation de la fonction mysqli_multi_query() à travers un exemple pour exécuter plusieurs commandes SQL. L'exemple est le suivant : 🎜rrreee🎜Résultat de sortie : 🎜🎜🎜Comment exécuter plusieurs commandes SQL à la fois lors de l’apprentissage de la base de données PHP ?🎜🎜Les résultats ci-dessus sont complétés via la fonction mysqli_multi_query() Exécute plusieurs commandes SQL, 🎜🎜Ce à quoi nous devons faire attention est : 🎜🎜Parce que la fonction mysqli_multi_query() peut exécuter une ou plusieurs requêtes dans succession, et chaque commande SQL Chacune peut renvoyer un résultat, et chaque ensemble de résultats doit être obtenu si nécessaire. Par conséquent, il y a eu quelques changements dans le traitement des résultats renvoyés par cette fonction. Le résultat de la première commande de requête doit être lu à l'aide de mysqli_use_result() ou mysqli_store_result() fonction. 🎜🎜Vous pouvez également utiliser la fonction <code>mysqli_store_result() pour renvoyer immédiatement tous les résultats au client, et c'est plus efficace. De plus, vous pouvez utiliser la fonction mysqli_more_results() pour vérifier s'il existe des jeux de résultats supplémentaires. 🎜🎜Si vous souhaitez traiter le prochain jeu de résultats, vous pouvez utiliser la fonction mysqli_next_result() pour obtenir le prochain jeu de résultats. La fonction renvoie VRAI lorsqu'il y a un prochain jeu de résultats et renvoie FAUX lorsqu'il y a. ce n'est pas le cas. Dans le cas d'un jeu de résultats, vous devez également utiliser la fonction mysqli_use_result() ou mysqli_store_result() pour lire le contenu du jeu de résultats. 🎜🎜Ce qui précède est une méthode orientée objet.Ensuite, regardons la méthode orientée processus.L'exemple est le suivant : 🎜rrreee🎜Le résultat de sortie est le même que le résultat ci-dessus, nous pouvons donc utiliser mysqli_multi_query(). fonction pour exécuter plusieurs commandes SQL en même temps. 🎜🎜Si vous êtes intéressé, vous pouvez cliquer sur "🎜Tutoriel vidéo PHP🎜" pour en savoir plus sur les connaissances PHP. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn