1.区别
PDO 应用在 12 种不同数据库中, MySQLi 只针对 MySQL 数据库。
所以,如果你的项目需要在多种数据库中切换,建议使用 PDO ,这样你只需要修改连接字符串和部分查询语句即可。 使用 MySQLi, 如果不同数据库,你需要重新编写所有代码,包括查询。
两者都是面向对象, 但 MySQLi 还提供了 API 接口。
两者都支持预处理语句。 预处理语句可以防止 SQL 注入,对于 web 项目的安全性是非常重要的。
使用 PDO 的最大好处是在数据库查询过程出现问题时可以使用异常类来 处理问题。如果 try{ } 代码块出现异常,脚本会停止执行并会跳到第一个 catch(){ } 代码块执行代码。 在以上捕获的代码块中我们输出了 SQL 语句并生成错误信息
2.mysqli连接数据库 --MySQLi - 面向对象
$server_name = 'localhost';
$username = 'root';
$password = 'root';
//创建连接
$conn = new mysqli($server_name,$username,$password);
//检测连接
if ($conn->connect_error) {
die('连接失败'.$conn->connect_error);
}
echo '连接成功';
//创建数据库
$sql = "create database myDb";
if ($conn->query($sql) == true) {
echo '数据库创建成功';
} else {
echo $conn->error;
}
//关闭连接
$conn->close();
创建数据表
$server_name = 'localhost';
$username = 'root';
$password = 'root';
$db_name = 'mydb';
//创建连接
$conn = new mysqli($server_name,$username,$password,$db_name);
//检测连接
if ($conn->connect_error) {
die('连接失败'.$conn->connect_error);
}
//创建数据表
$sql = "
create table test2 (
id int(11) unsigned auto_increment primary key,
firstname varchar(15) not null,
lastname varchar(15) not null,
email varchar(50) not null,
create_time timestamp
)
";
if ($conn->query($sql) === true) {
echo '数据表test2创建成功!';
} else {
echo $conn->error;
}
$conn->close();
插入数据
$server_name = 'localhost';
$username = 'root';
$password = 'root';
$db_name = 'mydb';
//创建连接
$conn = new mysqli($server_name,$username,$password,$db_name);
if ($conn->connect_error) {
echo '连接失败:'.$conn->connect_error;
}
$sql = "insert into test (firstname,lastname,email) value('liu','dehua','123456@qq.com')";
if ($conn->query($sql) === true) {
echo '数据插入成功';
} else {
echo $conn->error;
}
$conn->close();
3.mysqli连接数据库 --MySQLi - 面向过程
$server_name = 'localhost';
$username = 'root';
$password = 'root';
//创建连接
$conn = mysqli_connect($server_name,$username,$password);
//检测连接
if (!$conn) {
die('连接失败'.mysqli_connect_error());
}
echo '连接成功';
//创建数据库
$sql = "create database myDb";
if (mysqli_query($conn,$sql)) {
echo '数据库创建成功';
} else {
echo mysqli_error($conn);
}
//关闭连接
mysqli_close($conn);
创建数据表
$server_name = 'localhost';
$username = 'root';
$password = 'root';
$db_name = 'mydb';
//创建连接
$conn = mysqli_connect($server_name,$username,$password,$db_name);
//检测连接
if (!$conn) {
die('连接失败'.mysqli_connect_error());
}
//创建数据表
$sql = "
create table test1 (
id int(11) unsigned auto_increment primary key,
firstname varchar(15) not null,
lastname varchar(15) not null,
email varchar(50) not null,
create_time timestamp
)
";
if (mysqli_query($conn,$sql)) {
echo '数据表test1创建成功!';
} else {
echo mysqli_error($conn);
}
mysqli_close($conn);
插入数据
$server_name = 'localhost';
$username = 'root';
$password = 'root';
$db_name = 'mydb';
//创建连接
$conn = mysqli_connect($server_name,$username,$password,$db_name);
if (!$conn) {
echo '连接失败:'.mysqli_connect_error();
}
$sql = "insert into test (firstname,lastname,email) values('liu','dehua','123456@qq.com')";
if (mysqli_query($conn,$sql)) {
echo '数据插入成功';
} else {
echo mysqli_error($conn);
}
mysqli_close($conn);
4.PDO连接数据库
$server_name = 'localhost';
$username = 'root';
$password = 'root';
//创建连接
try{
$conn = new PDO("mysql:host=$server_name;",$username,$password);
//设置PDO错误模式为异常--不设置不会提示报错
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$sql = 'create database myDb';
$conn->exec($sql);
echo '创建数据库成功';
} catch(PDOException $e) {
echo $e->getMessage();
}
//关闭连接
$conn = null;
创建数据表
$server_name = 'localhost';
$username = 'root';
$password = 'root';
$db_name = 'mydb';
//检测连接
try {
//创建连接
$conn = new PDO("mysql:host=$server_name;dbname=$db_name",$username,$password);
//设置pdo错误模式,用于抛出错误
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
//创建数据表
$sql = "
create table test4 (
id int(11) unsigned auto_increment primary key,
firstname varchar(15) not null,
lastname varchar(15) not null,
email varchar(50) not null,
create_time timestamp
) ";
$conn->exec($sql);
echo '数据表test4创建成功!';
} catch (PDOException $e) {
echo $e->getMessage();
}
$conn = null;
插入数据
$server_name = 'localhost';
$username = 'root';
$password = 'root';
$db_name = 'mydb';
try {
//创建连接
$conn = new PDO("mysql:host=$server_name;dbname=$db_name",$username,$password);
//设置错误抛出
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$sql = "insert into test (firstname,lastname,email) values('liu','dehua','123456@qq.com')";
$conn->exec($sql);
echo '数据插入成功';
} catch (PDOException $e) {
echo $e->getMessage();
}
$conn = null;