
正文
php数据库pdo封装类 php 封装
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
PHP的PDO封装类帮满写下注释吧,跪求大神帮助
一种参数写法:
$arr = array(
'要更新字段1'=array('更新值1'),
'要更新字段2'=array('更新值2'),
);
$where = '条件字段1=条件值1 and 条件字段2=条件值2';
另一种写法:
$arr = array(
'要更新字段1'=array('更新值1'),
'要更新字段2'=array('更新值2'),
);
$where = '条件字段1=:param1 AND 条件字段2=:param2';
$paramArr = array(
'param1' = '更新值1',
'param2' = '更新值2',
);
相关问答
Q1: pdo是什么
pdo是什么
PDO(PHP Data Objects)是一种在PHP里连接数据库的使用接口。PDO与mysqli曾经被建议用来取代原本PHP在用的mysql相关函数,基于数据库使用的安全性,因为后者欠缺对于SQL注入的防护。
Q2: Php中的pdo是什么意思啊?举个例子指点迷津??!
就是操作数据库的方法,
pdo就是把操作数据库的函数封装成一个pdo类,其间做了安全验证而已。
在使用PDO之前首先要设置PHP.INI文件,使PHP支持PDO,因为PHP5默认是不支持的。在PHP安装目录下找到PHP.INI文件,打开并搜索extension=php_pdo.dll 和 extension=php_pdo_mysql.dll,将前面的分号(;)去掉,重启apache即可。
接下来我们就开始写PHP代码了,首先是连接数据库,看下面的例子:
!--?php
define('DB_NAME', 'pdo_test');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
try {
$DBH = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWORD);
$DBH---exec('SET CHARACTER SET '.DB_CHARSET);
$DBH-exec('SET NAMES '.DB_CHARSET);
} catch (PDOException $e) {
print "Error!: " . $e-getMessage() . "br";
die();
}
?
连接成功后,我们需要对数据库中的数据进行增删改查操作,这里主要用到exec和query两个函数。
示例:
!--?php
//增加数据
$sql_insert = 'Insert INTO wp_options(blog_id,option_name,option_value,autoload) VALUES (0,'.time().rand(1,100).','.time().rand(1,100).',\'no\')';
$back = $DBH---exec($sql_insert); //返回 bool 的true or fal
$lastInsertId = $DBH-lastInsertId();
//删除数据
$sql_delete = 'Delete FROM wp_options Where option_id='.$lastInsertId;
$back = $DBH-exec($sql_delete); //返回 bool 的true or fal
$lastInsertId = $DBH-lastInsertId();
//更新数据
$sql_update = 'Update wp_options SET option_name = \''.time().rand(1,100).'\' Where option_id='.$lastInsertId;
$lastUpdateId = $DBH-lastInsertId(); //返回的对应的操作的id
//查询数据
$sql_select = 'Select option_id FROM wp_options orDER BY option_id DESC LIMIT 4 ';
$back = $DBH-query($sql_select); //返回一个对象 这个对象可以用foreach 直接遍历循环 循环的为查询的结果集
$back = $DBH-query($sql_select)-fetch(); //返回一条数据结果 这个对象可以用foreach 直接遍历循环 循环的为查询的结果集
$back = $DBH-query($sql_select)-fetchAll(); //返回一个数组 这个对象可以用foreach 直接遍历循环 循环的为查询的结果集
$back = $DBH-query($sql_select)-fetchColumn(0); //返回一个字段字符串,这个字符串是返回的记录的第一条记录的第一个字段
?
到这里,PDO的基本操作基本上结束了。对于一般的企业网站,小型的管理系统基本上能满足了,但是,如果我们开发大型网站或者逻辑较复杂的管理系统,仅仅靠数据的读写是远远不够的,我们可能还需要对数据库的存储过程、事务等对象进行操作,下面我们继续看看用PDO是如何实现的。如果还有更多问题可以去后盾网论坛问题求助专区,希望我的回答对你有帮助!
Q3: php跪求封装好的pdo预处理类,在线等
?php
//数据库连接类,不建议直接使用DB,而是对DB封装一层
//这个类不会被污染,不会被直接调用
class DB {
//pdo对象
private $_pdo = null;
//用于存放实例化的对象
static private $_instance = null;
//公共静态方法获取实例化的对象
static protected function getInstance() {
if (!(self::$_instance instanceof self)) {
self::$_instance = new self();
}
return self::$_instance;
}
//私有克隆
private function __clone() {}
//私有构造
private function __construct() {
try {
$this-_pdo = new PDO(DB_DNS, DB_USER, DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND='SET NAMES '.DB_CHARSET));
$this-_pdo-setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
exit($e-getMessage());
}
}
//新增
protected function add($_tables, Array $_addData) {
$_addFields = array();
$_addValues = array();
foreach ($_addData as $_key=$_value) {
$_addFields[] = $_key;
$_addValues[] = $_value;
}
$_addFields = implode(',', $_addFields);
$_addValues = implode("','", $_addValues);
$_sql = "INSERT INTO $_tables[0] ($_addFields) VALUES ('$_addValues')";
return $this-execute($_sql)-rowCount();
}
//修改
protected function update($_tables, Array $_param, Array $_updateData) {
$_where = $_setData = '';
foreach ($_param as $_key=$_value) {
$_where .= $_value.' AND ';
}
$_where = 'WHERE '.substr($_where, 0, -4);
foreach ($_updateData as $_key=$_value) {
if (Validate::isArray($_value)) {
$_setData .= "$_key=$_value[0],";
} else {
$_setData .= "$_key='$_value',";
}
}
$_setData = substr($_setData, 0, -1);
$_sql = "UPDATE $_tables[0] SET $_setData $_where";
return $this-execute($_sql)-rowCount();
}
//验证一条数据
protected function isOne($_tables, Array $_param) {
$_where = '';
foreach ($_param as $_key=$_value) {
$_where .=$_value.' AND ';
}
$_where = 'WHERE '.substr($_where, 0, -4);
$_sql = "SELECT id FROM $_tables[0] $_where LIMIT 1";
return $this-execute($_sql)-rowCount();
}
//删除
protected function delete($_tables, Array $_param) {
$_where = '';
foreach ($_param as $_key=$_value) {
$_where .= $_value.' AND ';
}
$_where = 'WHERE '.substr($_where, 0, -4);
$_sql = "DELETE FROM $_tables[0] $_where LIMIT 1";
return $this-execute($_sql)-rowCount();
}
//查询
protected function select($_tables, Array $_fileld, Array $_param = array()) {
$_limit = $_order = $_where = $_like = '';
if (Validate::isArray($_param) !Validate::isNullArray($_param)) {
$_limit = isset($_param['limit']) ? 'LIMIT '.$_param['limit'] : '';
$_order = isset($_param['order']) ? 'ORDER BY '.$_param['order'] : '';
if (isset($_param['where'])) {
foreach ($_param['where'] as $_key=$_value) {
$_where .= $_value.' AND ';
}
$_where = 'WHERE '.substr($_where, 0, -4);
}
if (isset($_param['like'])) {
foreach ($_param['like'] as $_key=$_value) {
$_like = "WHERE $_key LIKE '%$_value%'";
}
}
}
$_selectFields = implode(',', $_fileld);
$_table = isset($_tables[1]) ? $_tables[0].','.$_tables[1] : $_tables[0];
$_sql = "SELECT $_selectFields FROM $_table $_where $_like $_order $_limit";
$_stmt = $this-execute($_sql);
$_result = array();
while (!!$_objs = $_stmt-fetchObject()) {
$_result[] = $_objs;
}
return Tool::setHtmlString($_result);
}
//总记录
protected function total($_tables, Array $_param = array()) {
$_where = '';
if (isset($_param['where'])) {
foreach ($_param['where'] as $_key=$_value) {
$_where .= $_value.' AND ';
}
$_where = 'WHERE '.substr($_where, 0, -4);
}
$_sql = "SELECT COUNT(*) as count FROM $_tables[0] $_where";
$_stmt = $this-execute($_sql);
return $_stmt-fetchObject()-count;
}
//得到下一个ID
protected function nextId($_tables) {
$_sql = "SHOW TABLE STATUS LIKE '$_tables[0]'";
$_stmt = $this-execute($_sql);
return $_stmt-fetchObject()-Auto_increment;
}
//执行SQL
private function execute($_sql) {
try {
$_stmt = $this-_pdo-prepare($_sql);
$_stmt-execute();
} catch (PDOException $e) {
exit('SQL语句:'.$_sql.'br /错误信息:'.$e-getMessage());
}
return $_stmt;
}
}
?
Q4: 为什么 PHP 应该使用 PDO 方式访问数据库
1、方便不同数据库之间php数据库pdo封装类的切换
数据库有很多种php数据库pdo封装类,比如mysqlphp数据库pdo封装类,mysqliphp数据库pdo封装类,Oraclephp数据库pdo封装类,Access等等,使用pdo方式连接数据库,只需要定义DSN即可以连接各种类型的数据库
2、PDO有预处理机制,数据库操作更快,而且预处理机制可以有效的防止数据注入,降低数据库被黑客攻击的可能
php数据库pdo封装类的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php 封装、php数据库pdo封装类的信息别忘了在本站进行查找喔。







