溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP數(shù)據(jù)庫(kù)怎么一次執(zhí)行多條SQL命令

發(fā)布時(shí)間:2021-10-28 09:57:03 來(lái)源:億速云 閱讀:162 作者:iii 欄目:編程語(yǔ)言

本篇內(nèi)容主要講解“PHP數(shù)據(jù)庫(kù)怎么一次執(zhí)行多條SQL命令”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“PHP數(shù)據(jù)庫(kù)怎么一次執(zhí)行多條SQL命令”吧!

PHP數(shù)據(jù)庫(kù)怎么一次執(zhí)行多條SQL命令

在上篇文章中我們給大家介紹了獲取SQL的查詢結(jié)果的常用函數(shù),通過(guò)不同的函數(shù)來(lái)查詢數(shù)據(jù)返回的形式不同,運(yùn)行mysqli_query() 函數(shù)每次只能執(zhí)行一條SQL命令,在PHP中有一個(gè)函數(shù)可以讓代碼一次執(zhí)行多條SQL命令,那就是mysqli_multi_query() 函數(shù),接下來(lái)讓我們一起來(lái)了解一下mysqli_multi_query() 函數(shù)吧。

mysqli_multi_query() 函數(shù)

在我們前面介紹的 mysqli_query() 函數(shù)的時(shí)候,運(yùn)行該函數(shù)每次只能執(zhí)行一條SQL命令,但是想要執(zhí)行多條SQL命令的時(shí)候,mysqli_query() 函數(shù)就不能滿足我們了,這時(shí)候我們就需要通過(guò)mysqli_multi_query() 函數(shù)來(lái)實(shí)現(xiàn)一次執(zhí)行多條 SQL 命令。

mysqli_multi_query() 函數(shù)的語(yǔ)法格式如下:

mysqli::multi_query(string $query)

這是面向?qū)ο蟮膶?xiě)法,下面是面向過(guò)程的寫(xiě)法:

mysqli_multi_query(mysqli $link, string $query)

其中需要注意的是:

  • $query  表示為要查詢的 SQL 語(yǔ)句

  • $link  表示為使用 mysqli_connect() 函數(shù)返回的鏈接標(biāo)識(shí)

  • $query   表示參數(shù),其中可以包含多條 SQL 命令,每條 SQL 命令之間使用分號(hào);分隔。如果第一條 SQL 命令在執(zhí)行時(shí)沒(méi)有出錯(cuò),那么這個(gè)函數(shù)就會(huì)返回 TRUE,否則將返回 FALSE。

接下來(lái)我們通過(guò)示例來(lái)看一下mysqli_multi_query() 函數(shù)的使用,來(lái)執(zhí)行多條SQL命令,示例如下:

<?php
    $host     = 'localhost';
    $username = 'root';
    $password = 'root';
    $dbname   = 'test';
    $mysql    = new Mysqli($host, $username, $password, $dbname);
    if($mysql -> connect_errno){
        die('數(shù)據(jù)庫(kù)連接失敗:'.$mysql->connect_errno);
    }else{
        $sql    = 'select id,name from user;';  // SQL 語(yǔ)句
        $sql    .= 'select sex,age from user';  // SQL 語(yǔ)句
        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 '<hr>';
                }else{
                    break;
                }
            } while ($mysql -> next_result());
        }
        $mysql -> close();
    }
?>

輸出結(jié)果:

PHP數(shù)據(jù)庫(kù)怎么一次執(zhí)行多條SQL命令

上述結(jié)果通過(guò)mysqli_multi_query() 函數(shù)完成了執(zhí)行多條SQL命令,

其中我們需要注意的是:

因?yàn)?mysqli_multi_query() 函數(shù)能夠連接執(zhí)行一個(gè)或多個(gè)查詢,而每條 SQL 命令都可能返回一個(gè)結(jié)果,在必要時(shí)需要獲取每一個(gè)結(jié)果集。所以對(duì)該函數(shù)返回結(jié)果的處理也有了一些變化,第一條查詢命令的結(jié)果要用 mysqli_use_result() mysqli_store_result() 函數(shù)來(lái)讀取。

也可以使用 mysqli_store_result() 函數(shù)將全部結(jié)果立刻取回到客戶端,而且這么做的效率更高。另外,可以使用mysqli_more_results() 函數(shù)檢查是否還有其他結(jié)果集。

如果想對(duì)下一個(gè)結(jié)果集進(jìn)行處理,可以使用 mysqli_next_result() 函數(shù)獲取下一個(gè)結(jié)果集,有下一個(gè)結(jié)果集時(shí)該函數(shù)返回 TRUE,沒(méi)有時(shí)返回 FALSE,在有下一個(gè)結(jié)果集的情況下,也需要使用  mysqli_use_result()mysqli_store_result() 函數(shù)來(lái)讀取結(jié)果集的內(nèi)容。

上述使用的是面向?qū)ο蟮姆椒?,接下?lái)看一下面向過(guò)程的方法,示例如下:

<?php
    $host     = 'localhost';
    $username = 'root';
    $password = 'root';
    $dbname   = 'test';
    $link     = @mysqli_connect($host, $username, $password, $dbname);
    if($link){
        $sql    = 'select id,name from user;';  // SQL 語(yǔ)句
        $sql    .= 'select sex,age from user';  // SQL 語(yǔ)句
        $result = mysqli_multi_query($link, $sql);        // 執(zhí)行 SQL 語(yǔ)句,并返回結(jié)果
        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 '<hr>';
            }else{
                break;
            }
        } while (mysqli_next_result($link));
        mysqli_close($link);
    }else{
        echo '數(shù)據(jù)庫(kù)連接失敗!';
    }
?>

輸出結(jié)果與上述結(jié)果相同,由此我們便通過(guò)mysqli_multi_query() 函數(shù)一次性完成多條SQL命令。

到此,相信大家對(duì)“PHP數(shù)據(jù)庫(kù)怎么一次執(zhí)行多條SQL命令”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI