mysqli對象中的multi_query()方法

來源:互聯網
上載者:User
一次執行多條SQL命令使用mysqli對象中的multi_query()方法。

具體做法:

把多條SQL命令寫在同一個字串裡作為參數傳遞給multi_query()方法,多條SQL之間使用分號(;)分隔。如果第一條命令在執行裡沒有出錯,這個方法就會返回TRUE,否則返回FALSE 。

由於multi_query()方法能夠串連執行一個或多個查詢,而每條SQL命令都可能返回一個結果,在必要時需要擷取每一個結果集。所以對該方法返回結果的處理也有一些變化,第一條查詢命令的結果要用mysqli對象中的use_result()或store_result()方法來讀取,當然,使用store_result()方法將全部結果立刻返回到用戶端,這種做法效率更高。另外,可以用mysqli對象中的more_results()方法檢查是否還有其他的結果集。

如果想對下一個結果集進行處理,應該調用mysqli對象中的next_results()方法,擷取下一個結果集。這個方法返回TRUE或FALSE。

如果有下一個結果集,也需要使用use_result()或store_result()方法來讀取。


執行多條SQL命令代碼如下:
$mysqli=new mysqli("localhost","mysql_user","mysql_pwd","my_db_name");
/* check connection */
if($mysqli->mysql_connect_errno()){
printf ("串連失敗:%s
",mysql_connect_error());
exit();
}
$query="SET NAMES GB2312;";
$query.="SELECT CURERENT_USER();" //擷取使用串連的使用者名稱
$query.="SELECT name,phone FROM contactinfo LIMIT 2";
/* execute multi query */
if($mysqli->multi_query($query)){
do{
if($result=$mysqli->store_result()){
//$mysqli->store_result() 擷取第一個結果集
while($row=$result->fetch_row()){
foreach($row as $data){
echo $data." ";
}
}
echo '
';
}

if($mysqli->more_results()){
echo "----------------------------
";
}
}while($mysqli->next_result());
}
/* close connection */
$mysqli->close();
?>

註:

在以上樣本中,使用mysqli對象中的multi_query()方法一次執行三條SQL命令,擷取多個結果集並從中遍曆資料。如果在命令的處理過程中發生了錯誤,multi_query()和next_result()方法就會出現問題。

multi_query()方法的返回返回值,以及mysqli的屬性errno、error、info等只與第一條SQL命令有關,無法判斷第二條及以後的命令是否在執行時發生了錯誤。所以在執行multi_query()方法的返回值是TRUE時,並不意味著後續命令在執行時沒有出錯。

以上就介紹了mysqli對象中的multi_query()方法,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.