php pdo 简单使用 (一)

简介:

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='[email protected]',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 编码)

<?php
header("Content-type: text/html; charset=utf-8");

<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, $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='[email protected]',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;
?>
				
时间: 2024-07-31 06:09:19

php pdo 简单使用 (一)的相关文章

php pdo 简单使用 (二)

通过上一节内容 php pdo 简单使用(一)了解了链接的创建和简单的操作. 通过 pdo 有三种方式执行sql语句: exec, query, prepared statement 1. exec() 函数适用于执行一次sql 操作,并且不适用于select语句 参见:http://php.net/manual/zh/pdo.exec.php 2. query() 函数适用于执行一次sql操作,并且在下一次query之前要fetch 出所有的结果否则执行将会失败 参见:http://php.n

PHP PDO 简单登陆操作

用PHP做出一个简单的登陆操作,确实很简单,下面就让我给大家简单的介绍一下PDO做出一个登陆界面操作的过程,因为也是初学乍练,不足之处请大家包涵. 首先,首先还要建一个表,在MySQL中建表,核心代码如下: 1 DROP TABLE IF EXISTS `t_login`; 2 CREATE TABLE `t_login` ( 3 `userid` int(4) NOT NULL DEFAULT '0', 4 `username` varchar(20) DEFAULT NULL, 5 `use

PHP – PDO简单概述

1. 何为PDO? PDO(PHP数据对象) 是一个轻量级的.具有兼容接口的PHP数据连接拓展,是一个PHP官方的PECL库,随PHP 5.1发布,需要PHP 5的面向对象支持,因而在更早的版本上无法使用.它所提供的数据接入抽象层,具有与具体数据库类型无关的优势,为它所支持的数据库提供统一的操作接口.目前支持的数据库有Cubrid.FreeTDS / Microsoft SQL Server / Sybase.Firebird/Interbase 6.IBM DB2.IBM Informix D

数据库抽象层 - PDO

数据库抽象层: 在数据迁移和项目操作多数据库时,为了便于操作而提供一种的解决方案. 当从一个数据库系统向另一个数据库系统迁移时,几乎不用更改太多的程序代码,如将MS SQL Server迁移到MySQL. 代码规划必须规范,尽量使用相同的数据进行对象实例化,并且使用相同的数据库抽象层(如PDO).这样只需要改变系统的配置文件即可迁移数据库. 目前,使用PHP进行不同的数据库系统开发,这些系统很不相同,而许多数据库抽象层在PHP的层次有所不同,但彼此使用方法相当,它的发展无疑会提高开发效率. 常见

php类模块引擎PDO操作MySQL数据库简单阐述

PDO是什么呢? 通俗说就是别人写的一个“数据库操作工具类”,它非常强大,可以应对市面上几乎所有主流数据库, 具体应用时候有这样一个关系: 即,要操作某种数据,就得去“打开”对应的pdo引擎. 在php.ini的配置文件中,无非就是一个“模块”而已,我们只需要把分号删掉就表示开启!如下: 改为: 使用pdo连接mysql数据库 $dsn = "mysql:host=服务器地址/名称:port=端口号:dbname=数据库名"; $opt = array(PDO::MYSQL_ATTR_

PHP5中PDO的简单使用

PDO(php Data Object) 是PHP 5新出来的东西,在PHP 6都要出来的时候,PHP 6只默认使用PDO来处理数据库,将把所有的数据库扩展移到了PECL,那么默认就是没有了我们喜爱的php_mysql.dll之类的了,那怎么办捏,我们只有与时俱进了,我就小试了一把PDO.(本文只是入门级的,高手可以略过,呵呵) [PDO是啥] PDO是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理,什么php_mysql.

pdo的简单介绍和使用

1,PDO的定义:php data object(php数据对象); 2,连接pdo的相关参数:$dsn.$user.$pass. 其中$dsn="mysql:host=$host;dbname=$dbname"; 1)$dsn:数据源,字符串类型 2)$user=数据库连接账户名 3)$pass=数据库连接密码 3,pdo支持的数据库多达12种以上,用于连接不同的数据库;便于项目后期的扩展和数据库更改 4,PDOStatement类的作用:解析结果集,实现预处理,事务处理等特殊功能

yaf框架封装简单的pdo类

<?php/** Created by PhpStorm. User: Administrator Date: 2017/7/24 Time: 14:03*//* 数据库PDO操作 */class pdo {private function Link(){$config=Yaf_Application::app()->getConfig();try{$PDO=new PDO($config['mysql']['dsn'],$config['mysql']['user'],$config['my

数据库的事务处理---PDO实现

事务处理用一句简单的术语称为"原子操作",即一件事情,要么全部完成,要么一个也别完成:有一种一荣俱荣,一损俱损的感觉. 最常用的就是在交易过程中,比如在网络中,甲方付费给乙方,钱确认付款,但是乙方并未确认收款,那么,甲方的账户并不会减少,乙方的账户也并不会增加. 只有当甲方确认付款,乙方确认收款,两个步骤都完成,并且不出现错误的时候,双方的账户才会改变 看代码也许更好理解 1 <?php 2 try{ 3 $pdo=new PDO("mysql:host=localho