前端之家收集整理的这篇文章主要介绍了
php pdo 简单使用 (一),
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
简介:
PDO扩大为PHP访问数据库定义了1个轻量级的、1致性的接口,它提供了1个数据访问抽象层,这样,不管使用甚么数据库,都可以通过1致的函数履行查询和获得数据。
即提供了1个数据库访问抽象层能使得我们通过1致的函数和写法来操作不同数据库,有益于往后对数据库的迁移,固然也有安全方面的提升。
对照:
PHP 操作数据库以MysqL 为例经常使用的方法有 PHP_MysqL,PHP_MysqLi,pdo
1.PHP_MysqL 和 PHP_MysqLi 都是不可以移植的,只能利用于MysqL 数据库, 而pdo 是可以轻易移植的。
2.PHP_MysqL 是我们初学PHP 学的操作数据库的函数,但是其实他基本上很少使用了,其中最重要的1点就是容易造成安全问题。
存在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方式连接数据库将会是1种趋势。
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 编码
网上总结的 编码需要注意的问题以下:
1、服务端程序声明编码,比如header("Content-type: text/html; charset=utf⑻");
2、客户端声明编码,比如 <Meta http-equiv="content-type" content="text/html; charset=utf⑻">
3、数据库编码、表和字段的编码
4、文件本身编码属性
5、连接数据库时请声明编码,比如$pdo->query('set names utf8');
只要上述都1致了编码问题1般都会解决的。
完全示例代码:(文件本身也应当使用utf8 编码)
<?
PHP
header("Content-type: text/html; charset=utf⑻");
<pre name="code" class="
PHP">$dbType = '
MysqL';
$dbUser = 'root';
$dbPass = 'simael';
$dbhost = 'localhost';
$dbName = 'pdotest';
$dsn="$dbType:host=$dbhost;dbname=$dbName";
try{
$pdo = new PDO($dsn,$dbPass,array(PDO::
MysqL_ATTR_INIT_COMMAND => "SET NAMES'utf8';"));
//$pdo = new PDO($dsn,$dbPass);
echo "PDO成功连接
MysqL数据库!";
}catch(PDOException $exception){
echo $exception->getMessage();
}
$pdo->query('set names utf8');
$
sql = "INSERT INTO la_comments SET nick_name='formPdo',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;
?>