mysqli和PDO连接数据库

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;
 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值