PHP,Mysql

MySQL批处理

批处理

再添加数据时,可能会遇到要添加多条信息的情况,比如商品表中插入100条商品数据,按照普通的方法,我们需要insert100次才可以完成,如下:

<?php

$mysql = new Mysqli('localhost','root',root,'shop');

if ($mysql){
    echo '连接成功';
}else{
    die('连接失败');
}

$mysql->set_charset('utf8');

$sql1 = "insert into user (name,price) VALUES ('小米8',2399)";
$sql2 = "insert into user (name,price) VALUES ('耐克',499)";
$sql3 = "insert into user (name,price) VALUES ('aoc',800)";
$sql4 = "insert into user (name,price) VALUES ('败家之眼',69999)";
$sql5 = "insert into user (name,price) VALUES ('达尔优',479)";
if (!$mysql->query($sql1)){
    die('插入失败');
}
if (!$mysql->query($sql2)){
    die('插入失败');
}
if (!$mysql->query($sql3)){
    die('插入失败');
}
if (!$mysql->query($sql4)){
    die('插入失败');
}
if (!$mysql->query($sql5)){
    die('插入失败');
}
$mysql->close();

我用mysqli插入了5条语句,插入成功,没什么问题,但是太麻烦了,有没有跟简单的方法呢?我想一条语句把所有的信息插入到数据表里,这时就要用到mysqli中的multi_query

我们先看一下PHP手册中的解释
20190121094213368.png
可以执行多个使用分号分隔的sql语句,我们来试一试

<?php

$mysql = new Mysqli('localhost','root',root,'shop');

if ($mysql){
    echo '连接成功';
}else{
    die('连接失败');
}

$mysql->set_charset('utf8');

$sql = "insert into user (name,price) VALUES ('小米8',2399);";
$sql .= "insert into user (name,price) VALUES ('耐克',499);";
$sql .= "insert into user (name,price) VALUES ('aoc',800);";
$sql .= "insert into user (name,price) VALUES ('败家之眼',69999);";
$sql .= "insert into user (name,price) VALUES ('达尔优',479)";
if (!$mysql->multi_query($sql)){
    die('插入失败');
}

$mysql->close();

也成功的插入了这五条数据,这里需要注意一下,他只能返回第一条语句的错误,如果第二条语句出现了错误,终止执行但不返回错误,要先调用mysqli_next_result() 函数才可以返回。

批处理细节

1.dml查询和dql查询不要混用,因为dml的返回值时布尔型,dql的返回值时结果集。
2.执行sql语句,返回值以第一条语句为基准

微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

支付宝扫一扫,向我赞赏

回复

This is just a placeholder img.