PHP MySQL 插入多条数据

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

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注入漏洞带来的风险。

TAG标签:
一佰互联-领先的自助建站网站建设网站设计网站开发网站制作做网站建网站虚拟主机云主机vps主机租用域名注册网站制作如何建网站?用巅云建站系统优惠套餐:域名+空间+建站系统即可轻松做网站,无需安装、一键上传、自由更改换模板,拖拉式“DIY”随心布局,通过网络轻点鼠标自己就能做网站!同步生成:电脑站+手机站+微网站+小程序+APP,真正的五站合一。 我们还提供地方行业门户网站制作万州人才网招聘服务。
备案系统认证 安网 举报不良网站 举报不良网站 我们的支付方式 AAA级信用 AAA认证
上海 北京 深圳 广州 天津 杭州 南京 武汉 成都 沈阳 大连 长沙 济南 青岛 苏州 福州 无锡 哈尔滨 宁波 重庆 大庆 厦门 西安 长春 珠海 郑州 海口 昆明 太原 石家庄 温州 合肥 乌鲁木齐 南宁 南通 合肥 兰州 呼和浩特 贵阳 烟台 秦皇岛 包头 唐山 银川 汕头 连云港 威海 西宁 湛江 北海 万州 涪陵 长寿 黔江 永川 丰都 忠县 江津 南川 开县 云阳 万盛 梁平 垫江 巫山 城口 建站宝盒 免费建站 门户网站建设 微信网站 手机网站 门户网站制作

7x24小时服务电话:18581389571 传真:023-85725751 免费建站交流群:236412099 139947842(自助建站交流) E-Mail:post@yinxi.net 网站投诉:
重庆楚捷科技有限公司 一佰互联©版权所有 自助建站(www.yinxi.net,Inc.) 2001-2020 All Rights Reserved 本站程序受法律保护,网站法律顾问:ITLAW-庄毅雄律师
中华人民共和国信息产业部网站备案号:渝ICP备12000592号
云主机 网站模板 虚拟主机 重庆监控 虚拟主机 万州人才网 如何建立网站 网站建设 域名注册 虚拟主机 网站制作SEO优化