php pdo 简单使用 (一)
来源:互联网 发布:excel时间自动刷新数据 编辑:程序博客网 时间:2024/06/03 17:12
简介:
PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。
即提供了一个数据库访问抽象层能使得我们通过一致的函数和写法来操作不同数据库,有利于日后对数据库的迁移,当然也有安全方面的提升。
对比:
php 操作数据库以mysql 为例常用的方法有 php_mysql , php_mysqli , pdo
1.php_mysql 和 php_mysqli 都是不可以移植的,只能应用于mysql 数据库, 而pdo 是可以轻易移植的。
2.php_mysql 是我们初学php 学的操作数据库的函数,但是其实他基本上很少使用了,其中最重要的一点就是容易造成安全问题。
存在SQL注入,于是php 提供了函数mysql_real_escape_string 如果存在很多的变量每一个都要经过 mysql_real_escape_string
反而变的很麻烦。
3.pdo 支持预处理,预处理功能可以有效的避免sql注入,并提高效率。
4.php_mysqli 和 pdo 都支持面向对象。
5.pdo 长连接方式性能上优于php_mysqli (参考网上资料)
php_mysql 方式优势已经不大了,php_mysqli 最致命的就是不能移植到其它数据库,除非你很确定不会更换数据库。显然 pdo方式连接数据库将会是一种趋势。
pdo简单操作数据库:
首先php 要启用php-pdo 相关扩展
<?php$dbType = 'mysql';$dbUser = 'root';$dbPass = 'simael';$dbhost = 'localhost';$dbName = 'pdotest';$dsn="$dbType:host=$dbhost;dbname=$dbName";try{ $pdo = new PDO($dsn, $dbUser, $dbPass); echo "PDO成功连接MySQL数据库!";}catch(PDOException $exception){ echo $exception->getMessage();}
插入 数据
<?php//$pdo->query('set names utf8');$sql = "INSERT INTO la_comments SET nick_name='formPdo',email='pdo@pdo.com',comment='中文comment',page_id='11',created_at=NOW(),updated_at=NOW()";$res1 = $pdo->exec($sql);var_dump($res1);
此时去数据库看到中文 可能是乱码,是因为编码问题各种错乱的原因
添加代码
$pdo->query('set names utf8');数据存储仍存在错误,是因为有可能你的header 是gbk 编码
网上总结的 编码需要注意的问题如下:
一、服务端程序声明编码,比如header("Content-type: text/html; charset=utf-8");
二、客户端声明编码,比如 <META http-equiv="content-type" content="text/html; charset=utf-8">
三、数据库编码、表以及字段的编码
四、文件本身编码属性
五、连接数据库时请声明编码,比如$pdo->query('set names utf8');
只要上述都一致了编码问题一般都会解决的。
完整示例代码:(文件本身也应该使用utf8 编码)
<?phpheader("Content-type: text/html; charset=utf-8");$dbType = 'mysql';$dbUser = 'root';$dbPass = 'simael';$dbhost = 'localhost';$dbName = 'pdotest';$dsn="$dbType:host=$dbhost;dbname=$dbName";try{$pdo = new PDO($dsn, $dbUser, $dbPass,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES'utf8';")); //$pdo = new PDO($dsn, $dbUser, $dbPass); echo "PDO成功连接MySQL数据库!";}catch(PDOException $exception){echo $exception->getMessage();}$pdo->query('set names utf8');$sql = "INSERT INTO la_comments SET nick_name='formPdo',email='pdo@pdo.com',comment='中文comment',page_id='11',created_at=NOW(),updated_at=NOW()";$res1 = $pdo->exec($sql);var_dump($res1);$sql = "SELECT * FROM la_comments";$res2 = $pdo->query($sql);while($row = $res2->fetch()){print_r($row);echo '<br>';}$pdo = null;?>
- php pdo 简单使用 (一)
- php pdo 简单使用 (二)
- php的PDO连接数据库(一)
- [PHP]PDO的使用
- PHP 中使用 PDO
- php mysql PDO使用
- PHP PDO的使用
- php mysql PDO使用
- PHP 中使用 PDO
- PHP 中使用 PDO
- php mysql PDO使用
- PHP pdo使用总结
- php mysql PDO使用
- PHP PDO 使用详解
- PHP PDO的使用
- PHP PDO的简单使用(query(),exec(),prepare(),Transaction,行锁)
- php 使用PDO,防止sql注入 简单说明
- pdo的简单使用(代码)
- 菜鸟好文推荐(四)——基于JavaScript的现代Web应用全栈开发:MEAN
- hdu2045递推
- 如何在eclipse中避免js错误提示
- 对象初始化
- iPhone 真机调试安装流程
- php pdo 简单使用 (一)
- 1002. 写出这个数
- python(第四天):函数注解
- commons dbcp
- NSLog效率低下的原因
- DWR3.0框架入门(1) —— 实现ajax
- 华为USG2230E sslvpn
- Jetty与tomcat的比较
- 系统入门(3): Android中的Parcel是什么