废话不多说 直接上代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/4/21
* Time: 10:41
*/
header( "Content-type: text/html; charset=utf-8" );
$mysqli = new mysqli( 'localhost' , 'root' , 'root' , 'sql' );
$mysqli ->query( 'set names utf8' );
//批量插入演示
$data [] = array ( 'aa' ,10);
$data [] = array ( 'bb' ,20);
$data [] = array ( 'cc' ,30);
$fields = array ( 'name' , 'score' );
$sql = warpSqlByData( 'bb' , $data , $fields );
$falg = $mysqli ->query( $sql );
if ( $falg )
{
echo '执行完成' ;
}
//写一个函数 用来生产多条数据的单句sql
function warpSqlByData( $table , $data , $fields )
{
$sql = "INSERT INTO " . $table ;
$col_list = '' ;
$value_list = '' ;
$fields = array_map ( 'formatclos' , $fields );
if ( is_array ( $fields ))
{
$col_list = implode( ',' , $fields );
}
//组织列
$cols = '(' . $col_list . ')' ;
$sql = $sql . $cols ;
//再来组织value部分
foreach ( $data as $value )
{
//判断列的值 进行转化
$value = array_map ( 'formatvalues' , $value );
$value_part = implode( ',' , $value );
$value_list .= '(' . $value_part . '),' ;
}
$value_list = rtrim( $value_list , ',' );
$value_list = ' VALUES' . $value_list ;
$sql = $sql . $value_list ;
return $sql ;
}
//格式化列名
function formatclos( $col )
{
return sprintf( "`$col`" );
}
//格式化列名
function formatvalues( $val )
{
return sprintf( "'$val'" );
}
|
效果图
ok 完成!
以上这篇PHP实现单条sql执行多个数据的insert语句方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/dzyweer/article/details/80032834