php往mysql中批量插入数据 PHP代码


批量插入

方法一、使用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();


方法二、使用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 . "<br>" . $conn->error;
    }
}
 
$costEnd = microtime(true);
$cost = round($costEnd - $costBegin, 3);
var_dump($cost);
 
$conn->close();


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回