真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql中怎么使用php批量插入數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)MySQL中怎么使用php批量插入數(shù)據(jù),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

成都創(chuàng)新互聯(lián)公司是專業(yè)的墨玉網(wǎng)站建設(shè)公司,墨玉接單;提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行墨玉網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

假如說我有這樣一個(gè)表,我想往這個(gè)表里面插入大量數(shù)據(jù):

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循環(huán)插入

在往mysql插入少量數(shù)據(jù)的時(shí)候,我們一般用for循環(huán):

$arr = [

[

'name' => 'testname1',

'age' => 18,

],

[

'name' => 'testname2',

'age' => 19,

],

[

'name' => 'testname3',

'age' => 18,

],

];

$servername = "localhost";

$port = 3306;

$username = "username";

$password = "password";

$dbname = "mytestdb";

// 創(chuàng)建連接

$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();

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

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

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

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

$arr = [

[

'name' => 'testname1',

'age' => 18,

],

[

'name' => 'testname2',

'age' => 19,

],

[

'name' => 'testname3',

'age' => 18,

],

// 此處省略

……

……

];

$servername = "localhost";

$port = 3306;

$username = "username";

$password = "password";

$dbname = "mytestdb";

// 創(chuàng)建連接

$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;

}

// 去除最后一個(gè)逗號(hào),并且加上結(jié)束分號(hào)

$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();

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

如果你覺得數(shù)組太大,想要減少sql錯(cuò)誤的風(fēng)險(xiǎn),也可以使用array_chunk將數(shù)組切成指定大小的塊,然后對(duì)每個(gè)塊進(jìn)行insert合并插入。

關(guān)于mysql中怎么使用php批量插入數(shù)據(jù)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


分享標(biāo)題:mysql中怎么使用php批量插入數(shù)據(jù)
鏈接分享:http://weahome.cn/article/geoiji.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部