香港高速VIP云机房火爆上线啦!无需备案,开通即用!配套《巅云自助建站系统3.0》将带给您飞一般的可视化拖拽建站体验,欢迎免费体验。

PHP MySQL 插入多条数据

一佰互联网站制作(www.yinxi.net) 发布日期 2018-05-30 17:09:54 浏览数: 1499

PHP MySQL 插入多条数据

一般情况下,INSERT 语句只能向 MySQL 数据库添加一条语句,而本文将介绍如何使用函数批量的向数据表插入多条数据。

使用 MySQLi 和 PDO 向 MySQL 插入多条数据

mysqli_multi_query() 函数可用来执行多条SQL语句。

以下实例向 "MyGuests" 表添加了三条新的记录:

实例 (MySQLi - 面向对象)

<?php
$servername = "localhost";
$username = "username";
$password = 
"password";
$dbname = 
"myDB";

// 创建链接
$conn = 
new mysqli($servername, $username, $password, $dbname);

// 检查链接

if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}


$sql = "INSERT INTO 
MyGuests (firstname, lastname, email)

VALUES ('John', 'Doe', 'john@example.com');";

$sql .= "INSERT INTO 
MyGuests (firstname, lastname, email)

VALUES ('Mary', 'Moe', 'mary@example.com');";

$sql .= "INSERT INTO 
MyGuests (firstname, lastname, email)

VALUES ('Julie', 'Dooley', 'julie@example.com')";


if ($conn->multi_query($sql) === TRUE) {
echo "New 
records created successfully";
} else {
echo 
"Error: " . $sql . "
" . $conn->error;
}

$conn->close();
?>


Note 请注意,每个SQL语句必须用分号隔开。


实例 (MySQLi - 面向过程)

<?php
$servername = "localhost";
$username = "username";
$password = 
"password";
$dbname = 
"myDB";

// 创建链接
$conn = mysqli_connect($servername, $username, $password, 
$dbname);

// 检查链接

if (!$conn) {
die("Connection 
failed: " . mysqli_connect_error());
}

$sql = "INSERT INTO 
MyGuests (firstname, lastname, email)

VALUES ('John', 'Doe', 'john@example.com');";

$sql .= "INSERT INTO 
MyGuests (firstname, lastname, email)

VALUES ('Mary', 'Moe', 'mary@example.com');";

$sql .= "INSERT INTO 
MyGuests (firstname, lastname, email)

VALUES ('Julie', 'Dooley', 'julie@example.com')";


if (mysqli_multi_query($conn, $sql)) {
echo "New 
records 
created successfully";
} else {
echo "Error: " 
. $sql . "
" . mysqli_error($conn);
}

mysqli_close($conn);
?>


实例 (PDO)

<?php
$servername = "localhost";
$username = "username";

$password = "password";
$dbname = 
"myDBPDO";

try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", 
$username, $password);

// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, 
PDO::ERRMODE_EXCEPTION);

// 开始事务

$conn->beginTransaction();
// SQL 语句

$conn->exec("INSERT INTO MyGuests (firstname, lastname, email) 

VALUES ('John', 'Doe', 'john@example.com')");

$conn->exec("INSERT INTO MyGuests (firstname, lastname, email) 

VALUES ('Mary', 'Moe', 'mary@example.com')");

$conn->exec("INSERT INTO MyGuests (firstname, lastname, email) 

VALUES ('Julie', 'Dooley', 'julie@example.com')");


// commit the transaction
$conn->commit();

echo "New records created successfully";
}
catch(PDOException $e)
{

// roll back the transaction if something failed

$conn->rollback();

echo $sql . "
" . $e->getMessage();
}


$conn = null;
?>



使用预处理语句

mysqli 扩展提供了第二种方式用于插入语句。

我们可以预处理语句及绑定参数。

mysql 扩展可以不带数据发送语句或查询到mysql数据库。 你可以向列关联或 "绑定" 变量。

Example (MySQLi 使用预处理语句)

<?php
$servername = "localhost";
$username = "username";
$password = 
"password";
$dbname = 
"myDB";

// Create connection
$conn = 
new mysqli($servername, $username, $password, $dbname);

// Check connection

if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} else {
$sql = "INSERT INTO 
MyGuests (firstname, lastname, email) VALUES(?, ?, ?)";

// 为 mysqli_stmt_prepare() 初始化
statement 对象
$stmt = 
mysqli_stmt_init($conn);

//预处理语句

if (mysqli_stmt_prepare($stmt, $sql)) {

// 绑定参数

mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);


// 设置参数并执行

$firstname = 'John';
$lastname 
= 'Doe';
$email = 
'john@example.com';

mysqli_stmt_execute($stmt);


$firstname = 'Mary';
$lastname 
= 'Moe';
$email = 
'mary@example.com';

mysqli_stmt_execute($stmt);


$firstname = 'Julie';

$lastname = 'Dooley';
$email = 
'julie@example.com';

mysqli_stmt_execute($stmt);
}
}
?>

我们可以看到以上实例中使用模块化来处理问题。我们可以通过创建代码块实现更简单的读取和管理。

注意参数的绑定。让我们看下 mysqli_stmt_bind_param() 中的代码:

mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);

该函数绑定参数查询并将参数传递给数据库。第二个参数是 "sss" 。以下列表展示了参数的类型。 s 字符告诉 mysql 参数是字符串。

This argument may be one of four types:

  • i - integer

  • d - double

  • s - string

  • b - BLOB

每个参数必须指定类型,来保证数据的安全性。通过类型的判断可以减少SQL注入漏洞带来的风险。

一佰互联是全国知名建站品牌服务商,我们有九年网站建设、网站制作、网页设计、php开发和域名注册及虚拟主机服务经验,提供的自助建站服务更是全国有名。近年来还整合团队优势自主开发了可视化多用户”巅云建站系统“3.0平台版,拖拽排版网站制作设计,轻松实现pc站、手机微网站、小程序、APP一体化全网营销网站建设 ,已成功的为全国上百家网络公司提供自助建站平台搭建服务。

相关新闻more

26
03月
首发丨即速应用获5000万元A+轮融资,推进

简介:亿欧B2B/企业服务1月14日消息,国内小程序生态服务平台即速应用在近日完成了5000万元的A+轮融资,投资方为深创投及其旗下的深圳市... >>详情

03
05月
浅析新站的优化方法与技巧

本人就深有体会,对于新站,我认为,前期一定要做好,新站的优化方法与技巧如下几点: 1、选择好网站空间,是保证网站稳定性的前提;(这个太重要了... >>详情

30
04月
php懒人函数 自动添加数据

复制代码 代码如下: /* *@自动添加数据函数 *@$table 表名 *@$arr 字段库 array("title",array("c... >>详情

20
04月
HTML5注册页面示例代码

复制代码代码如下: <!DOCTYPE html> <html> <head> <title>... >>详情

营业执照. cdn加速服务 备案系统认证 网络安全协会 我们的支付方式AAA认证
上海 北京 深圳 广州 天津 杭州 南京 武汉 成都 沈阳 大连 长沙 济南 青岛 苏州 福州 无锡 哈尔滨 宁波 重庆 大庆 厦门 西安 长春 珠海 郑州 海口 昆明 太原 石家庄 温州 合肥 乌鲁木齐 南宁 南通 合肥 兰州 呼和浩特 贵阳 烟台 秦皇岛 包头 唐山 银川 汕头 连云港 威海 西宁 湛江 北海 万州 涪陵 长寿 黔江 永川 丰都 忠县 江津 南川 开县 云阳 万盛 梁平 垫江 巫山 城口 建站宝盒 免费建站 门户网站建设 微信网站 手机网站 门户网站制作

7x24小时服务电话:18581389571 传真:023-85725751 免费建站交流群:236412099 139947842(自助建站交流) E-Mail:post@yinxi.net 网站投诉:
重庆楚捷科技有限公司 一佰互联©版权所有 自助建站(www.yinxi.net,Inc.) 2001-2020 All Rights Reserved 本站程序受法律保护,网站法律顾问:ITLAW-庄毅雄律师
中华人民共和国信息产业部网站备案号:渝ICP备12000592号