数码资讯
数据库连接方式的PDO和mysqliPHP的比较与分析
1)总比较 PDO mysqli 数据库支持 12种不同的数据库支持 支持MySQL 美国石油学会 面向对象的程序设计 OOP的过程 连接 容易的 容易的 命名参数 支持 我不支持它。 对象映射支持 支持 支持 预处理语句 (客户端) 支持 我不支持它。 性能 快速的 快速的 支持存储过程 支持 支
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
1)总比较
PDO
mysqli
数据库支持
12种不同的数据库支持
支持MySQL
美国石油学会
面向对象的程序设计
OOP的过程
连接
容易的
容易的
命名参数
支持
我不支持它。
对象映射支持
支持
支持
预处理语句
(客户端)
支持
我不支持它。
性能
快速的
快速的
支持存储过程
支持
支持
2连接方式
看看两者都连接到数据库的方式。
复制代码代码如下所示:
/ / PDO
为PDO =新PDO(MySQL:主机= localhost;北京数据库
/ / mysqli,面向过程的模式
$ mysqli = mysqli_connect('localhost ','username ','password ','database);
/ / mysqli,面向对象
$ mysqli =新mysqli('localhost ','username ','password ','database);
3数据库支持
PDO支持多种数据库,但只支持mysql mysqli
4命名参数名称参数
PDO的方式:
复制代码代码如下所示:
$params =阵列(测试:用户名= >,电子邮件= > $邮件:last_login= >时间(3600));
为PDO ->准备('
从用户中选择*
用户名=用户名
电子邮件=电子邮件
和last_login >:last_login);
和mysqli麻烦,不支持这样的,只:
复制代码代码如下所示:
查询=美元美元mysqli ->准备(
从用户中选择*
=用户名
和电子邮件
和last_login >);
为查询-> bind_param('sss '测试',为邮件,时间()- 3600);
$查询>执行();
在这种情况下,一个接一个问号的顺序,也更麻烦,不方便。
支持5个ORM映射
例如,有一个类用户,如下所示:
复制代码代码如下所示:
类用户
{
公共身份证;
公共first_name美元;
公共last_name美元;
公共功能信息()
{
返回。美元-> ID。# ':'美元-> first_name。。这last_name美元->;
}
}
为查询=选择ID,first_name,从用户last_name;
/ / PDO
结果=美元美元PDO ->查询($查询);
结果setfetchmode美元->(PDO::fetch_class,用户);
当(用户=结果- >获取())
{
用户(>)。;
}
mysqli是面向过程的方法:
复制代码代码如下所示:
如果($结果= mysqli_query($ mysqli,$查询)){
而($用户= mysqli_fetch_object(美元的结果,用户)){
用户(>)。;
}
}
mysqli采用面向过程的方法:
复制代码代码如下所示:
面向对象方法 / / mysqli。
如果($结果= $ mysqli ->查询($查询)){
而($用户= $结果-> fetch_object(用户)){
用户(>)。;
}
}
6预防SQL注入:
PDO手动设置
复制代码代码如下所示:
用户名为PDO::美元报价(美元_get { 'username});
为PDO ->查询(从users用户名= $用户名);
使用mysqli
复制代码代码如下所示:
用户名= mysqli_real_escape_string美元(美元_get { 'username});
$ mysqli ->查询(从users用户名= $用户名);
7 preparestament
PDO模式:
复制代码代码如下所示:
为PDO ->准备('select *用户,用户名为:用户名);
为PDO ->执行(阵列($ _get { 'username}:用户名= >));
MYSQLI:
复制代码代码如下所示:
查询=美元美元mysqli ->准备('select *用户,用户名为);
为查询-> bind_param(是的,_get美元{ 'username});
$查询>执行();
公司是否有通过本文链接PHP PDO和mysqli 2方面有了新的认识,我希望这篇文章能帮助你。
PDO
mysqli
数据库支持
12种不同的数据库支持
支持MySQL
美国石油学会
面向对象的程序设计
OOP的过程
连接
容易的
容易的
命名参数
支持
我不支持它。
对象映射支持
支持
支持
预处理语句
(客户端)
支持
我不支持它。
性能
快速的
快速的
支持存储过程
支持
支持
2连接方式
看看两者都连接到数据库的方式。
复制代码代码如下所示:
/ / PDO
为PDO =新PDO(MySQL:主机= localhost;北京数据库
/ / mysqli,面向过程的模式
$ mysqli = mysqli_connect('localhost ','username ','password ','database);
/ / mysqli,面向对象
$ mysqli =新mysqli('localhost ','username ','password ','database);
3数据库支持
PDO支持多种数据库,但只支持mysql mysqli
4命名参数名称参数
PDO的方式:
复制代码代码如下所示:
$params =阵列(测试:用户名= >,电子邮件= > $邮件:last_login= >时间(3600));
为PDO ->准备('
从用户中选择*
用户名=用户名
电子邮件=电子邮件
和last_login >:last_login);
和mysqli麻烦,不支持这样的,只:
复制代码代码如下所示:
查询=美元美元mysqli ->准备(
从用户中选择*
=用户名
和电子邮件
和last_login >);
为查询-> bind_param('sss '测试',为邮件,时间()- 3600);
$查询>执行();
在这种情况下,一个接一个问号的顺序,也更麻烦,不方便。
支持5个ORM映射
例如,有一个类用户,如下所示:
复制代码代码如下所示:
类用户
{
公共身份证;
公共first_name美元;
公共last_name美元;
公共功能信息()
{
返回。美元-> ID。# ':'美元-> first_name。。这last_name美元->;
}
}
为查询=选择ID,first_name,从用户last_name;
/ / PDO
结果=美元美元PDO ->查询($查询);
结果setfetchmode美元->(PDO::fetch_class,用户);
当(用户=结果- >获取())
{
用户(>)。;
}
mysqli是面向过程的方法:
复制代码代码如下所示:
如果($结果= mysqli_query($ mysqli,$查询)){
而($用户= mysqli_fetch_object(美元的结果,用户)){
用户(>)。;
}
}
mysqli采用面向过程的方法:
复制代码代码如下所示:
面向对象方法 / / mysqli。
如果($结果= $ mysqli ->查询($查询)){
而($用户= $结果-> fetch_object(用户)){
用户(>)。;
}
}
6预防SQL注入:
PDO手动设置
复制代码代码如下所示:
用户名为PDO::美元报价(美元_get { 'username});
为PDO ->查询(从users用户名= $用户名);
使用mysqli
复制代码代码如下所示:
用户名= mysqli_real_escape_string美元(美元_get { 'username});
$ mysqli ->查询(从users用户名= $用户名);
7 preparestament
PDO模式:
复制代码代码如下所示:
为PDO ->准备('select *用户,用户名为:用户名);
为PDO ->执行(阵列($ _get { 'username}:用户名= >));
MYSQLI:
复制代码代码如下所示:
查询=美元美元mysqli ->准备('select *用户,用户名为);
为查询-> bind_param(是的,_get美元{ 'username});
$查询>执行();
公司是否有通过本文链接PHP PDO和mysqli 2方面有了新的认识,我希望这篇文章能帮助你。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。