- 浏览: 7851889 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
在PHP中,如何选择PDO和mysqli呢?本文做个简单的比较
1)总的比较
PDO | MYSQLI | |
数据库支持 | 12种不同的数据库支持 | 支持MYSQL |
API | OOP | OOP和过程 |
命名参数 | 支持 | 不支持 |
对象映射支持 | 支持 | 支持 |
preparestment | 支持 | 不支持 |
支持存储过程 | 支持 | 支持 |
2 连接方式
先来看下两者连接数据库的方式:
// PDO
$pdo
=
new
PDO(
"mysql:host=localhost;dbname=database"
,
'username'
,
'password'
);
// mysqli, 面向过程方式
$mysqli
= mysqli_connect(
'localhost'
,
'username'
,
'password'
,
'database'
);
// mysqli, 面向对象
$mysqli
=
new
mysqli(
'localhost'
,
'username'
,
'password'
,
'database'
);
3 数据库支持
PDO支持多种数据库,但MYSQLI只支持MYSQL
4 命名参数name parameter
PDO的方式:
$params
=
array
(
':username'
=>
'test'
,
':email'
=>
$mail
,
':last_login'
=> time() - 3600);
$pdo
->prepare('
SELECT * FROM users
WHERE username = :username
AND email = :email
AND last_login > :last_login');
而MYSQLI则麻烦点,不支持这样,只能:
$query
=
$mysqli
->prepare('
SELECT * FROM users
WHERE username = ?
AND email = ?
AND last_login > ?');
$query
->bind_param(
'sss'
,
'test'
,
$mail
, time() - 3600);
$query
->execute();
这样的话,一个个对问号的顺序,也比较麻烦,不大方便。
5 ORM映射的支持
比如有个类user,如下:
class
User {
public
$id
;
public
$first_name
;
public
$last_name
;
public
function
info()
{
return
'#'
.
$this
->id.
': '
.
$this
->first_name.
' '
.
$this
->last_name;
}
}
$query
=
"SELECT id, first_name, last_name FROM users"
;
// PDO
$result
=
$pdo
->query(
$query
);
$result
->setFetchMode(PDO::FETCH_CLASS,
'User'
);
while
(
$user
=
$result
->fetch()) {
echo
$user
->info().
"\n"
;
}
MYSQLI用面向过程的方式:
if
(
$result
= mysqli_query(
$mysqli
,
$query
)) {
while
(
$user
= mysqli_fetch_object(
$result
,
'User'
)) {
echo
$user
->info().
"\n"
;
}
MYSQLI采用面向过程的方式:
// MySQLi, object oriented way
if
(
$result
=
$mysqli
->query(
$query
)) {
while
(
$user
=
$result
->fetch_object(
'User'
)) {
echo
$user
->info().
"\n"
;
}
}
6 防止SQL注入方面:
PDO 手工设置
$username
= PDO::quote(
$_GET
[
'username'
]);
$pdo
->query(
"SELECT * FROM users WHERE username = $username"
);
使用mysqli
$username
= mysqli_real_escape_string(
$_GET
[
'username'
]);
$mysqli
->query(
"SELECT * FROM users WHERE username = '$username'"
);
7 preparestament
PDO方式:
$pdo
->prepare(
'SELECT * FROM users WHERE username = :username'
);
$pdo
->execute(
array
(
':username'
=>
$_GET
[
'username'
]));
MYSQLI:
$query
=
$mysqli
->prepare(
'SELECT * FROM users WHERE username = ?'
);
$query
->bind_param(
's'
,
$_GET
[
'username'
]);
$query
->execute();
发表评论
-
11个php日常用的小tips 代码片段
2014-01-21 20:34 1889http://www.phpzag.com/11-useful ... -
php中的DirectoryIterator和RecursiveDirectoryIterator
2013-07-27 22:50 3473php中,可以用用DirectoryIterator获取指定目 ... -
uccenter中找回创始人密码
2013-03-11 19:12 1869偶然忘记了uccenter中的创始人密码,一查看,其实找回 ... -
php中通过register_shutdown_function记录fatal error
2013-02-09 23:56 2928今天发现php中,如果要记录fatal error的时候, ... -
php中检查是否ajax请求
2013-01-19 09:53 1442$ajax = false; if(!empty ... -
php中检查某个网页地址是否有效能被打开的最简单方法
2012-10-22 16:18 2058php中检查某个网页地址是否有效能被打开的最简单方法,其实可以 ... -
小结几个php操作office的类库
2012-07-20 19:16 19011 phpexcel 最强大完整的类库了,地址在: ht ... -
介绍几个PHP的开源不错的图片类库
2012-07-14 13:11 2843介绍几个PHP的开源不错的图片类库 1 pchart ... -
php中__sleep和__wakeup
2012-06-22 09:39 4480在php中,__sleep和___wakeup是两个分别自 ... -
PHP 5.4正式版重要新特性
2012-05-25 08:34 1627原文发表在:http://tech.it168.com/a20 ... -
用php实现备份数据库ZIP及导出
2012-04-17 08:59 1805经常在有的PHP开源系统中,看到有备份数据库并导出的方法 ... -
PHP Codeigniter 中的_remap方法简介
2012-04-05 21:06 4535在Codeigniter 中,其实有个容易忽略掉的不错的控 ... -
PHP 5.4中的traits初探
2012-04-01 19:57 5004PHP 5.4中的traits,是新引入的特性,中文还真不知道 ... -
php 5.4中新增加对session状态判断的功能
2012-02-20 12:28 3921在以前的php 版本中,要判断session是否有效,只能 ... -
php curl的几段小应用
2012-02-07 10:10 1778php 的CURL是不错的功能,下面收藏几段不错的片段 1 ... -
php 5.3中的一个type hinting的用法
2012-01-20 11:50 2270今天偶然看php 5.3中的一个特性,叫type hintin ... -
cakephp的分页排序
2012-01-04 10:38 4202cakephp中的分页还是很简单的,下面例子复习下 1 数据 ... -
mongodb+php学习1
2012-01-03 11:51 51871 mongodb启动时,设置启动项 C:\>mon ... -
php中挺好用的strtotime方法
2011-12-20 11:32 1919在PHP中,经常要对日期进行计算,比如要计算一个月前的日期 ... -
php中使用curl发送JSON数据
2011-11-28 13:43 11731在PHP中,可以使用curl去发送JSON数据,例子如下: ...
相关推荐
PDO和mysqli的区别描述,很好的资料啊,推荐大家下载学习。
主要介绍了php中数据库连接方式pdo和mysqli从各个方面进行了对比分析,十分全面,这里推荐给大家,有需要的小伙伴来参考下。
本文实例讲述了PHP使用PDO、mysqli扩展实现与数据库交互操作。...所以我们要尽量使用PDO和mysqli扩展。 PDO 基本操作如下: <?php // PDO + MySQL $servername = localhost; $username = username; $password =
本文实例讲述了php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率。分享给大家供大家参考,具体如下: <?php /** * 测试pdo和mysqli的执行效率 */ header(Content-type:text/html;charset=utf-8); //...
主要介绍了php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率,结合完整实例形式对比分析了php分别使用mysqli和pdo扩展连接mysql数据库的执行时间,需要的朋友可以参考下
php中pdo_informix,增加php对informix数据库链接的支持,版本是1.3.3,欢迎下载
php_pdo_oci.dll支持PHP的各个版本 用于php连接oracle时,报php_pdo_oci.dll不能正常加载的错误
PDO(PHP Data Object) 是PHP 5新出来的东西,在PHP 6都要出来的时候,PHP 6只默认使用PDO来处理数据库,将把所有的数据库扩展移到了PECL,那么默认就是没有了我们喜爱的php_mysql.dll之类的了,那怎么办捏,我们只有...
PDO 是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql 和mysqli 的函数库相比,PDO 让跨数据库的使用更具有亲和力;与ADODB 和MDB2 相比,PDO 更高效。目前而言,实现“数据库抽象层”任重而...
PHP的PDO连接SQLSERVER: 含全套工具: php5.4_x86_nts安装包 微软的SQLSRV拓展 微软的odbc驱动msodbcsql.msi 微软的sql客户端sqlncli.msi 配置好的php.ini 具体安装说明(原创亲测) 说实话这个得来很不容易,整整一天...
php5推出的pdo统一数据接口,为了方便数据的分页写的pdo分页类。
php pdo类封装,单例模式,多种操作方式,预处理,事务
PHP的PDO类教程,收集了php 使用pdo操作教程
PHP7.3的sql server PDO_DBLIB库
php pdo mysql dll file
php_pdo.php,放到xampp的ext文件夹里
当然 如果你要是不操作其他的数据库或者 当然这无疑是最好的选择 PDO则是最新出来的一种 连接方式 兼容大部分数据库 也解决了sql注入 但是也有缺点 它只支持php5以上的版本 不过听说在未来的php6中 只支持这种连接 ...
PHP PDO函数简介