- 浏览: 7935256 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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 1930http://www.phpzag.com/11-useful ... -
php中的DirectoryIterator和RecursiveDirectoryIterator
2013-07-27 22:50 3512php中,可以用用DirectoryIterator获取指定目 ... -
uccenter中找回创始人密码
2013-03-11 19:12 1916偶然忘记了uccenter中的创始人密码,一查看,其实找回 ... -
php中通过register_shutdown_function记录fatal error
2013-02-09 23:56 2965今天发现php中,如果要记录fatal error的时候, ... -
php中检查是否ajax请求
2013-01-19 09:53 1468$ajax = false; if(!empty ... -
php中检查某个网页地址是否有效能被打开的最简单方法
2012-10-22 16:18 2090php中检查某个网页地址是否有效能被打开的最简单方法,其实可以 ... -
小结几个php操作office的类库
2012-07-20 19:16 19361 phpexcel 最强大完整的类库了,地址在: ht ... -
介绍几个PHP的开源不错的图片类库
2012-07-14 13:11 2880介绍几个PHP的开源不错的图片类库 1 pchart ... -
php中__sleep和__wakeup
2012-06-22 09:39 4520在php中,__sleep和___wakeup是两个分别自 ... -
PHP 5.4正式版重要新特性
2012-05-25 08:34 1673原文发表在:http://tech.it168.com/a20 ... -
用php实现备份数据库ZIP及导出
2012-04-17 08:59 1842经常在有的PHP开源系统中,看到有备份数据库并导出的方法 ... -
PHP Codeigniter 中的_remap方法简介
2012-04-05 21:06 4584在Codeigniter 中,其实有个容易忽略掉的不错的控 ... -
PHP 5.4中的traits初探
2012-04-01 19:57 5050PHP 5.4中的traits,是新引入的特性,中文还真不知道 ... -
php 5.4中新增加对session状态判断的功能
2012-02-20 12:28 3967在以前的php 版本中,要判断session是否有效,只能 ... -
php curl的几段小应用
2012-02-07 10:10 1823php 的CURL是不错的功能,下面收藏几段不错的片段 1 ... -
php 5.3中的一个type hinting的用法
2012-01-20 11:50 2315今天偶然看php 5.3中的一个特性,叫type hintin ... -
cakephp的分页排序
2012-01-04 10:38 4227cakephp中的分页还是很简单的,下面例子复习下 1 数据 ... -
mongodb+php学习1
2012-01-03 11:51 52281 mongodb启动时,设置启动项 C:\>mon ... -
php中挺好用的strtotime方法
2011-12-20 11:32 1960在PHP中,经常要对日期进行计算,比如要计算一个月前的日期 ... -
php中使用curl发送JSON数据
2011-11-28 13:43 11782在PHP中,可以使用curl去发送JSON数据,例子如下: ...
相关推荐
在PHP中,数据库连接有多种方式,其中PDO(PHP Data Objects)和mysqli是两种常见的数据库扩展,它们都提供了与MySQL数据库交互的能力。然而,这两种方式在功能、性能和使用上存在一些差异。以下是对PDO和mysqli进行...
本文将深入探讨两种常见的MySQL数据库连接方式:mysqli和PDO(PHP Data Objects)扩展,并通过一个实际的代码示例来测试和对比它们之间的连接效率。 首先,mysqli扩展是MySQL Improved Extension的简称,专为PHP...
本文实例讲述了php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率。分享给大家供大家参考,具体如下: <?php /** * 测试pdo和mysqli的执行效率 */ header(Content-type:text/html;charset=utf-8); //...
- 对比测试 PDO 和 mysqli 在实际应用中的性能差异,选择更适合项目的解决方案。 总之,`laravel-eloquent-mysqli` 项目旨在帮助开发者了解和实践在 Laravel 中使用 mysqli 驱动进行数据库操作,这对于那些需要...
2. **PDO与mysqli扩展**:对比PDO和mysqli两种数据库操作方式,讲解其优点和使用场景。 **面向对象编程** 1. **类与对象**:阐述类的定义、属性和方法,以及对象的创建、克隆和销毁。 2. **继承与多态**:讲解...
在数据库比较中,Python和Ruby的ORM能力让数据库操作更加抽象化,减少了直接SQL的编写,而PHP虽然可以通过PDO或MySQLi进行数据库操作,但在面向对象方面不如Python和Ruby直观。然而,PHP在Web开发中的普及度使其在...
1. **数据库交互**:使用PHP的PDO或mysqli扩展与MySQL等数据库进行交互,存储和检索大量的中英文词汇及其解释。 2. **HTTP请求处理**:使用PHP的内置函数处理HTTP请求,如`$_GET`和`$_POST`,接收用户的查询参数。 ...
2. 在深入学习时,可以对比PHP4和PHP5的差异,了解技术演进的过程,这对理解PHP的发展历程非常有帮助。 3. 阿鲁制作的函数手册对于实际编码工作很有价值,可以快速解决在编程过程中遇到的问题。 4. 利用CHM文件的...
脚本接收到数据后,会与存储在数据库(如MySQL)中的用户信息进行对比验证。如果匹配成功,用户则被认为是已登录;否则,将显示错误消息。 在注册界面,PHP脚本处理新用户的注册请求。它接收并验证用户输入的资料,...
4. `ext`:这个目录可能包含了PHP的扩展库,比如PDO、MySQLi等,这些扩展可以增加PHP的功能。 5. `snapshot.txt`:这可能是一个快照文件,记录了编译或打包时的特定信息,如编译选项等。 6. `license.txt`:包含了...
2. **扩展库**:PHP有许多内置的扩展库,如MySQLi和PDO用于数据库操作,GD库用于图像处理,curl库用于HTTP传输,XML解析库等。这些扩展提供了丰富的功能,使PHP可以轻松处理各种复杂的任务。 3. **配置选项**:手册...
如果涉及到数据库操作,那么可能使用了PDO或mysqli扩展来连接MySQL或其他类型的数据库,进行数据的读写。 总的来说,这个PHP实例可以帮助网站管理员更好地理解搜索引擎如何与他们的网站互动,从而优化网页结构、...
12. **数据库连接与操作**:讲解如何使用PHP连接MySQL数据库,执行SQL查询,以及PDO和mysqli扩展的对比。 13. **模板引擎**:简述模板引擎的作用,如Smarty,以及如何在PHP项目中使用它来分离业务逻辑和显示逻辑。 ...
PHP常与数据库结合使用,本章涵盖了如何选择合适的数据库系统,如MySQL,以及连接、查询、插入、更新和删除数据的基本操作,利用mysqli或PDO扩展进行数据库操作的方法。 通过以上十个章节的学习,读者将全面了解PHP...
而在PHP中,通过PHP提供的数据库扩展,如mysqli或PDO,来实现与数据库的交互。每个语言提供的数据库接口各有特点,例如,PHP的mysqli扩展提供了面向对象和过程式两种方式来操作数据库,而JDBC则通常以面向对象的方式...
- **数据库集成**:PHP与MySQL等关系型数据库配合良好,提供了多种数据库访问接口,如PDO和mysqli。 2. **ASP.NET 2.0的优势** - **.NET Framework**:ASP.NET 2.0基于.NET Framework,提供了一整套开发工具和...
常用的数据库系统有MySQL,可以使用PHP的PDO或mysqli扩展来连接和操作。 2. **登录页面(login.php)**:用户访问登录页面时,会看到一个表单,包含用户名和密码字段。表单提交后,PHP脚本将接收这些数据,验证它们...
资源通常通过特定的函数创建和管理,如MySQLi或PDO的数据库连接。 【类】:类是面向对象编程的基础,它是对象的蓝图,定义了对象的行为(方法)和属性。类不直接存在内存中,但通过创建类的实例(对象)可以在内存...