博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PDO常见用法
阅读量:4041 次
发布时间:2019-05-24

本文共 3633 字,大约阅读时间需要 12 分钟。

1,数据库连接 8Xc平坦软件园

<?php8Xc平坦软件园

$dsn = ‘mysql:dbname=test1;host=localhost;port=3306′;8Xc平坦软件园

$user=”dbadmin”;8Xc平坦软件园

$pwd=”*****”;8Xc平坦软件园

$dbh = new PDO($dsn, $user, $pwd);8Xc平坦软件园

?>8Xc平坦软件园

2,数据查寻 8Xc平坦软件园

a)用query 8Xc平坦软件园

<?php8Xc平坦软件园

$sql = 'SELECT name, color, calories FROM fruit ORDER BY name';8Xc平坦软件园

foreach ($conn->query($sql) as $row) {
8Xc平坦软件园
print $row['name'] . "/t";8Xc平坦软件园
print $row['color'] . "/t";8Xc平坦软件园
print $row['calories'] . "/n";8Xc平坦软件园
}
8Xc平坦软件园

?>8Xc平坦软件园

b)用prepare 8Xc平坦软件园

<?php8Xc平坦软件园

$sqlcheck = “select attribute_id from eav_attribute ” .8Xc平坦软件园

” where eav_attribute.attribute_code=:attribute_code ” .8Xc平坦软件园
” and eav_attribute.entity_type_id=:entity_type_id”;8Xc平坦软件园
//sql语句中的attribute_code对应execute数组中的KEY 8Xc平坦软件园
$sthcheck = $dbh1->prepare($sqlcheck);8Xc平坦软件园
$sthcheck->execute(array(‘attribute_code ‘=>$tmp['attribute_code'],’entity_type_id’=>$tmp['entity_type_id']));8Xc平坦软件园
$col = $sthcheck->fetch(PDO::FETCH_ASSOC);8Xc平坦软件园

?>8Xc平坦软件园

c)对比一下b)中sql 8Xc平坦软件园

<?php8Xc平坦软件园

$sqlcheck = “select attribute_id from eav_attribute ” .8Xc平坦软件园

” where eav_attribute.attribute_code=? ” .8Xc平坦软件园
” and eav_attribute.entity_type_id=?”;8Xc平坦软件园
//sql语句中的attribute_code对应execute数组中的KEY8Xc平坦软件园
$sthcheck = $dbh1->prepare($sqlcheck);8Xc平坦软件园
$sthcheck->execute(array($tmp['attribute_code'],$tmp['entity_type_id']));8Xc平坦软件园
$col = $sthcheck->fetch(PDO::FETCH_ASSOC);8Xc平坦软件园

?>8Xc平坦软件园

3,数据更新/插入 8Xc平坦软件园

a) 8Xc平坦软件园

$sql_update = “update catalog_eav_attribute set attribute_id = ? where attribute_id = ? “;8Xc平坦软件园

$sthupdate = $dbh1->prepare($sql_update);8Xc平坦软件园
$aaa=$sthupdate->execute(array($col['attribute_id'],$tmp['attribute_id']));8Xc平坦软件园

b) 8Xc平坦软件园

$sql_update = “update catalog_eav_attribute set attribute_id = :aaa where attribute_id = :bbb “;8Xc平坦软件园

$sthupdate = $dbh1->prepare($sql_update);8Xc平坦软件园
$aaa=$sthupdate->execute(array(“aaa “=>$col['attribute_id'],”bbb”=>$tmp['attribute_id']));8Xc平坦软件园

c) 8Xc平坦软件园

$sql_update = “update catalog_eav_attribute set attribute_id = “.$col['attribute_id'].” where attribute_id = “.$tmp['attribute_id'].” “;8Xc平坦软件园

$sthupdate = $dbh1->exec($sql_update);8Xc平坦软件园

这里以update为例,插入的话,把sql变一下就行了。8Xc平坦软件园

4,数据删除 8Xc平坦软件园

$count = $dbh->exec("DELETE FROM catalog_eav_attribute WHERE attribute_id = 23"); 8Xc平坦软件园

5,取得刚插入数据的ID 8Xc平坦软件园

function pgsqlLastInsertId($sqlQuery, $pdoObject)8Xc平坦软件园

{
8Xc平坦软件园
// Checks if query is an insert and gets table name8Xc平坦软件园
if( preg_match("/^INSERT[/t/n ]+INTO[/t/n ]+([a-z0-9/_/-]+)/is", $sqlQuery, $tablename) )8Xc平坦软件园
{
8Xc平坦软件园
// Gets this table's last sequence value8Xc平坦软件园
$query = "SELECT currval('" . $tablename[1] . "_id_seq') AS last_value";
8Xc平坦软件园

$temp_q_id = $pdoObject->prepare($query);8Xc平坦软件园

$temp_q_id->execute();8Xc平坦软件园

if($temp_q_id)8Xc平坦软件园

{
8Xc平坦软件园
$temp_result = $temp_q_id->fetch(PDO::FETCH_ASSOC);8Xc平坦软件园
return ( $temp_result ) ? $temp_result['last_value'] : false;8Xc平坦软件园
}8Xc平坦软件园
}8Xc平坦软件园

return false;8Xc平坦软件园

}8Xc平坦软件园

$sql = 'INSERT INTO table (column) VALUES (/'some_value/');';8Xc平坦软件园

$result = $pdoObject->prepare($sql);8Xc平坦软件园
$result->execute();
8Xc平坦软件园

echo 'Last Insert ID: ' . pgsqlLastInsertId($sql, $pdoObject);8Xc平坦软件园

6,查看报错信息 8Xc平坦软件园

$stmt = $dbh->prepare($sql);8Xc平坦软件园

if (!$stmt) {
8Xc平坦软件园
echo "/nPDO::errorInfo():/n";8Xc平坦软件园
print_r($dbh->errorInfo());8Xc平坦软件园
}
8Xc平坦软件园

还有好多,只举了几个常用的例子,里面的东西还是要自己去实践的。8Xc平坦软件园

四,用pdo有什么优点,个人一些看法 8Xc平坦软件园

1,它能接好多数据库,现有的数据库绝大多数都可以用PDO来连,并且是统一的接口8Xc平坦软件园

2,用pdo来封装sql语句很方便。从开发者的工作效率来说会很高,prepare的sql语句当中可以不含有变量,这个挺爽的8Xc平坦软件园

3,用pdo封装sql后,对于做memcache也方便了好多,比如直接拿hash过的sql做key。最直接,最土的方法。8Xc平坦软件园

[]

转载地址:http://eyadi.baihongyu.com/

你可能感兴趣的文章
12.2: ORA-28040 Followed by ORA-1017 When Client is Under Version 12
查看>>
ORA-01031 TOAD 连接到12c数据库
查看>>
Docker-利用Dockerfile来搭建tomcat服务
查看>>
Docker跨服务器迁移
查看>>
VMware安装centos虚拟机 通过NAT与主机互通并能上网
查看>>
expdp/impdp 数据库迁移详细过程
查看>>
oracle 误删除表的几种恢复方法
查看>>
hadoop、hbase、hive、spark分布式系统架构详细搭建过程
查看>>
Hadoop与Hbase各版本对应关系
查看>>
impdp时ORA-39126: Worker unexpected fatal error in KUPW$WORKER.PUT_DDLS [TABLE_STATISTICS]
查看>>
OracleMTSRecoveryService 启动失败
查看>>
oracle job如何定时执行带参数的存储过程
查看>>
oracle12c存在pdb情况下的data guard 详细搭建
查看>>
oracle 查询自动补全日期以及相应的数据
查看>>
Centos7.4 zabbix3.4.8源码安装详细过程
查看>>
python 自动抓取网页新闻以及图片并存储到数据库中
查看>>
python监控系统(flask+python+html)
查看>>
oracle从备份集中恢复归档日志方法
查看>>
Oracle跨版本与跨平台执行传输表空间(XTTS)
查看>>
fatal: unable to access 'https://github.com/danfengcao/binlog2sql.git/': SSL connect error
查看>>