注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Copper peas ' Bolg

Keep On Moving...This Is My Life...

 
 
 

日志

 
 

【原】测试pdo的各种使用方式  

2011-07-12 16:23:28|  分类: php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

<?php
/**
 *
 * 测试pdo的各种使用方式
 * @anthor Chen Wei Han
 * @copyright  2011-7-12下午04:22:30
 * @package pdo
 * @todo
 */

try
{
     $PDO = new PDO('mysql:host=127.0.0.1;port=3306','root','123', array(PDO::ATTR_TIMEOUT=>3));
     $PDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//设置全局属性 让所有数据库错误抛出异常
    
    
}
catch (PDOException $e)
{
  echo "Error:".$e->getMessage();
}


/**
 * 常规使用,字符串需要自己加引号,单引号也需要转义
 */

/*
$name = 'cwh';
$sql  = "SELECT * FROM test.test WHERE name = '$name' ";
print_r($PDO->query($sql)->fetch(PDO::FETCH_ASSOC));
*/

/**
 * 以对象形式返回结果集中第一行
 */

/*
$sql  = "SELECT * FROM test.test limit 0,30";
$rs   = $PDO->query($sql)->fetchObject();
print_r($rs);
*/

/**
 * 测试转义字符 【可以自动加引号,自动转义,更安全】
 * 需手动转义的情况PDO->query();PDO->exec();事务处理等就先手动转义.PDO->prepare会自动转义
 * 注意: 在 magic_quotes_gpc 开启的情况下,再使用 quote 之类的函数会使得数据重复转义.
 */

/*
$name = "''ja\"c's";
//字段转义
$name = $PDO->quote($name);
$sql  = 'INSERT INTO test.test (name) VALUES ('.$name.') ';
echo $sql;
$PDO->query($sql);
*/

/***************************************(1)显式地把参数值做为参数传给execute**/
/**
 *
 * 预处理 编译模板  命名参数方式    显式
 */

/*
$name = 'cwh';
$sql = "SELECT * FROM test.test WHERE name = :name";
$tpl = $PDO->prepare($sql);

//直接以数组的形式
$tpl->execute(array(':name' => $name));

//终止此前模版编译执行的操作
//$tpl->closeCursor();

print_r($tpl->fetch(PDO::FETCH_ASSOC));
*/

/**
 * 预处理 编译模板  问号参数方式  显式 (占位符从0开始的索引偏移)
 */
/*
$name = 'cwh';
$sql = "SELECT * FROM test.test WHERE name = ?";
$stpl = $PDO->prepare($sql);
$stpl->execute(array('0'=>'cwh'));
print_r($stpl->fetch(PDO::FETCH_ASSOC));
*/


/**************************************(2)绑定参数****************************/

/**
 *
 * 预处理 编译模板  命名参数方式    绑定参数
 */

/*
$name = 'cwh';
$sql = "SELECT * FROM test.test WHERE name = :name";
$tpl = $PDO->prepare($sql);

//值设置方式
//$tpl ->bindParam(':name', $name);
//$tpl ->execute();

//终止此前模版编译执行的操作
//$tpl->closeCursor();

print_r($tpl->fetch(PDO::FETCH_ASSOC));
*/

/**
 * 预处理 编译模板  问号参数方式  绑定参数 (占位符的从1开始的索引偏移)
 */

/*
$name = 'cwh';
$sql = "SELECT * FROM test.test WHERE name = ?";
$stpl = $PDO->prepare($sql);
$stpl ->bindParam(1, $name);
$stpl->execute();
print_r($stpl->fetch(PDO::FETCH_ASSOC));
*/

/*************************************事务处理*********************************/

define('PDOTPL',"INSERT INTO test.test (name) VALUES (?)");
//$sql = "INSERT INTO test.test (name) VALUES (?)";
$stpl = $PDO->prepare(PDOTPL);
$arrvalue = array('Fredo','Sonny','lau');
try
{    
    $PDO->beginTransaction();
   
    foreach($arrvalue as $value)
    {
        $stpl->execute(array('0'=>$value));
    }
   
  
   
    /*
    $PDO->exec("INSERT INTO test.test (name) VALUES ('mick')");  
    $PDO->exec("INSERT INTO test.test (name) VALUES ('lily')");  
    $PDO->exec("INSERT INTO test.test (name) VALUES ('susa')");
    */
    
    //throw new Exception("test exception!"); 
    $PDO->commit();
    echo "success";  
}
catch (Exception $e)
{  
    $PDO->rollBack();  
    echo "Failed: " . $e->getMessage();  
}  


/**
 * 使用 implode 来构建查询语句
 */

/*
$fields = array('symbol', 'planet', 'element');

$update_fields = array();
$update_values = array();

foreach ($fields as $field) {
    $update_fields[] = "$field = ?";
    // 注意实际中要考虑转义问题,避免代码注入
    $update_values[] = $_POST[$field];
}

$st = $db->prepare("UPDATE zodiac SET " .
                    implode(',', $update_fields) .
                    'WHERE sign = ?');

// WHERE
$update_values[] = $_GET['sign'];

$st->execute($update_values);
*/

   
   

  评论这张
 
阅读(299)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018