日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php一次性执行多条sql_PHP循环执行多条SQL

發布時間:2024/9/15 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php一次性执行多条sql_PHP循环执行多条SQL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

與幾乎所有“如何在PHP中執行SQL”問題一樣,您實際上應該使用準備好的語句。這并不難:

$ids = array(2, 4, 6, 8);

// prepare an SQL statement with a single parameter placeholder $sql = "UPDATE MyTable SET LastUpdated = GETDATE() WHERE id = ?"; $stmt = $mysqli->prepare($sql);

// bind a different value to the placeholder with each execution for ($i = 0; $i < count($ids); $i++) { $stmt->bind_param("i", $ids[$i]); $stmt->execute(); echo "Updated record ID: $id\n"; }

// done $stmt->close(); 或者,您可以這樣做:

$ids = array(2, 4, 6, 8);

// prepare an SQL statement with multiple parameter placeholders $params = implode(",", array_fill(0, count($ids), "?")); $sql = "UPDATE MyTable SET LastUpdated = GETDATE() WHERE id IN ($params)"; $stmt = $mysqli->prepare($sql);

// dynamic call of mysqli_stmt::bind_param hard-coded eqivalent $types = str_repeat("i", count($ids)); // "iiii" $args = array_merge(array($types), $ids); // ["iiii", 2, 4, 6, 8] call_user_func_array(array($stmt, 'bind_param'), ref($args)); // $stmt->bind_param("iiii", 2, 4, 6, 8)

// execute the query for all input values in one step $stmt->execute();

// done $stmt->close(); echo "Updated record IDs: " . implode("," $ids) ."\n";

// ---------------------------------------------------------------------------------- // helper function to turn an array of values into an array of value references // necessary because mysqli_stmt::bind_param needs value refereces for no good reason function ref($arr) { $refs = array(); foreach ($arr as $key => $val) $refs[$key] = &$arr[$key]; return $refs; } 根據需要為其他字段添加更多參數占位符。

選哪一個?

第一種變體可迭代處理可變數量的記錄,從而多次訪問數據庫。這對于UPDATE和INSERT操作最有用。

第二種變體也適用于可變數量的記錄,但是它只命中一次數據庫。這比迭代方法高效得多,顯然,您只能對所有受影響的記錄執行相同的操作。這對于SELECT和DELETE操作,或者要更新具有相同數據的多條記錄時最有用。

為什么要準備陳述?

預備語句更安全,因為它們使SQL注入攻擊變得不可能。這是使用準備好的語句的主要原因,即使編寫它們是更多的工作。養成明智的習慣:即使您認為“不是真的”,也要始終使用準備好的語句。疏忽會來咬你(或你的顧客)。 與將多個完整的SQL字符串發送到數據庫相比,以不同的參數值多次重復使用同一條準備好的語句效率更高,因為數據庫只需要編譯一次該語句即可,并且也可以重新使用它。 僅將參數值發送到上的數據庫execute(),因此當重復使用時,需要較少的數據通過網絡。 在更長的循環中,使用準備好的語句和發送純SQL之間的執行時間差異將變得明顯。來源:stack overflow

總結

以上是生活随笔為你收集整理的php一次性执行多条sql_PHP循环执行多条SQL的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。