mysql 一次執行多條sql語句

2021-09-07 00:13:47 字數 2051 閱讀 1097

$mysqli = new mysqli($this->db->hostname,$this->db->username,$this->db->password,$this->db->database);   //

連線mysql資料庫

if ($mysqli->connect_errno)

$mysqli->multi_query($datastr); //執行sql語句

使用mysqli物件中的query()方法每次呼叫只能執行一條sql命令。如果需要一次執行多條sql命令,就必須使用mysqli物件中的 multi_query()方法。具體做法是把多條sql命令寫在同乙個字串裡作為引數傳遞給multi_query()方法,多條sql之間使用分號 (;)分隔。如果第一條sql命令在執行時沒有出錯,這個方法就會返回true,否則將返回false。

因為multi_query()方法能夠連線執行乙個或多個查詢,而每條sql命令都可能返回乙個結果,在必要時需要獲取每乙個結果集。所以對該方 法返回結果的處理也有了一些變化,第一條查詢命令的結果要用mysqli物件中的use_result()或store_result()方法來讀取,當 然,使用store_result()方法將全部結果立刻取回到客戶端,這種做法效率更高。另外,可以用mysqli物件中的 more_results()方法檢查是否還有其他結果集。如果想對下乙個結果集進行處理,應該呼叫mysqli物件中的next_result()方 法,獲取下乙個結果集。這個方法返回true(有下乙個結果)或false。如果有下乙個結果集,也需要使用use_result()或 store_result()方法來讀取。執行多條sql命令**如下所示:

<?php

$mysqli = new mysqli("localhost", "mysql_user","mysql_pwd", "demo"); //

連線mysql資料庫

if (mysqli_connect_errno

())

/*將三條sql命令使用分號(;)分隔, 連線成乙個字串

*///

設定查詢字符集為gb2312

$query = "set names gb2312;";

//從mysql伺服器獲取當前使用者

$query .= "select current_user();";

//從contactinfo表中讀取資料

$query .= "select name,phone from contactinfo limit 0,2";

//執行多條sql命令

if ($mysqli->multi_query($query

))

//輸出換行符號

echo "

";

}//關閉乙個開啟的結果集

$result->close();

}//判斷是否還有更多的結果集

if ($mysqli->more_results())

} while ($mysqli->next_result()); //

獲取下乙個結果集,並繼續執行迴圈

}

$mysqli->close(); //

關閉mysqli連線

?>

輸出結果如下所示:

mysql_user@localhost

-----------------

高某某   15801688338

洛某某   15801681234

在上面的示例程式中,使用mysqli物件中的multi_query()方法一次執行三條sql命令,獲取多個結果集並從中遍歷資料。如果在命令 的處理過程中發生了錯誤,multi_query()和next_result()方法就會出現問題。multi_query()方法的返回值,以及 mysqli的屬性errno、error、info等只與第一條sql命令有關,無法判斷第二條及以後的命令是否在執行時發生了錯誤。所以在執行 multi_query()方法的返回值是true時,並不意味著後續命令在執行時沒有出錯。

如何在Oracle中一次執行多條sql語句

有時我們需要一次性執行多條sql語句,而用來更新的sql是根據實際情況用 拼出來的 解決方案是把sql拼成下面這種形式 begin update tb vg set seq 1,vessel id jin14 vessel type track where batch number 20837 an...

Java 一次執行多條sql

一次執行多條sql,如果傳來的sql如果有一條不成功將顯示失敗 arraylist 為已封裝的sql語句 smsg 為資訊提示。當執行出問題時,輸出相應的資訊。如 輸入類名方法名,出錯時可以看到出問題的方法名稱 public boolean exemanysql arraylist arr,stri...

一次性執行多條SQL語句

本地 windows 192.168.55.133 遠端1 192.168.55.9 遠端2 192.168.55.10 利用phpmyadmin來賂遠端sql server匯入大量資料時,會很慢,基於卡死。因為,它是通過web方式來上傳的,匯入之前它會首先將要匯入的.sql檔案先上傳到伺服器然後再...