久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql中怎么使用php批量插入數據

137次閱讀
沒有評論

共計 2157 個字符,預計需要花費 6 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章將為大家詳細講解有關 mysql 中怎么使用 php 批量插入數據,文章內容質量較高,因此丸趣 TV 小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

假如說我有這樣一個表,我想往這個表里面插入大量數據:

CREATE TABLE IF NOT EXISTS `user_info` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 自增主鍵 ,

`name` varchar(255) NOT NULL default COMMENT 姓名 ,

`age` int(11) NOT NULL default 0 COMMENT 年齡 ,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT= 用戶信息表

批量插入

方法一、使用 for 循環插入

在往 mysql 插入少量數據的時候,我們一般用 for 循環:

$arr = [

[

name = testname1 ,

age = 18,

],

[

name = testname2 ,

age = 19,

],

[

name = testname3 ,

age = 18,

],

];

$servername = localhost

$port = 3306;

$username = username

$password = password

$dbname = mytestdb

// 創建連接

$conn = new mysqli($servername, $username, $password, $dbname, $port);

// 檢測連接

if ($conn- connect_error) {

die(connect failed: . $conn- connect_error);

}

$costBegin = microtime(true);

foreach($arr as $item) {

$sql = sprintf(INSERT INTO user_info (name, age) VALUES (%s , %d); , $item[name], (int)$item[age

if ($conn- query($sql) === TRUE) {

echo insert success

} else {

echo Error: . $sql . br . $conn- error;

}

}

$costEnd = microtime(true);

$cost = round($costEnd – $costBegin, 3);

var_dump($cost);

$conn- close();

假如說要批量插入大量數據,如果還用 for 循環的辦法插入是沒有問題的,只是時間會比較長。對比一下插入少量數據與插入大量數據,使用上面的 for 循環插入耗費的時間:條數時間 (單位:秒)。

方法二、使用 insert 語句合并插入

mysql 里面是可以使用 insert 語句進行合并插入的,比如:

INSERT INTO user_info (name, age) VALUES (name1 , 18), (name2 , 19); 表示一次插入兩條數據

$arr = [

[

name = testname1 ,

age = 18,

],

[

name = testname2 ,

age = 19,

],

[

name = testname3 ,

age = 18,

],

// 此處省略

……

……

];

$servername = localhost

$port = 3306;

$username = username

$password = password

$dbname = mytestdb

// 創建連接

$conn = new mysqli($servername, $username, $password, $dbname, $port);

// 檢測連接

if ($conn- connect_error) {

die(connect failed: . $conn- connect_error);

}

$costBegin = microtime(true);

if (!empty($arr)) {

$sql = sprintf(INSERT INTO user_info (name, age) VALUES

foreach($arr as $item) {

$itemStr = (

$itemStr .= sprintf(%s , %d , $item[ name], (int)$item[age

$itemStr .= ),

$sql .= $itemStr;

}

// 去除最后一個逗號,并且加上結束分號

$sql = rtrim($sql, ,

$sql .=

if ($conn- query($sql) === TRUE) {

} else {

echo Error: . $sql .

. $conn- error;

}

}

$costEnd = microtime(true);

$cost = round($costEnd – $costBegin, 3);

var_dump($cost);

$conn- close();

下面看一下少量數據與大量數據的時間對比。從總體時間上,可以看出 insert 合并插入比剛才 for 循環插入節約了很多時間, 效果很明顯條數時間 (單位:秒)。

如果你覺得數組太大,想要減少 sql 錯誤的風險,也可以使用 array_chunk 將數組切成指定大小的塊,然后對每個塊進行 insert 合并插入。

關于 mysql 中怎么使用 php 批量插入數據就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計2157字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 绥化市| 如皋市| 衡东县| 扎赉特旗| 奉新县| 金沙县| 宜州市| 富源县| 鄂温| 波密县| 铜梁县| 治县。| 东乌珠穆沁旗| 德阳市| 盘锦市| 渭源县| 武宁县| 广南县| 连城县| 会理县| 和顺县| 深圳市| 紫阳县| 临朐县| 东乌珠穆沁旗| 嘉兴市| 株洲市| 信丰县| 大渡口区| 昌图县| 呼图壁县| 科尔| 石城县| 潮安县| 偏关县| 错那县| 恩施市| 阳信县| 敖汉旗| 巴塘县| 辉南县|