<?php
$dbConn = new PDO(
"mysql:host=localhost;dbname=adtuu",'root','root',
array(
// 强制 PDO 获取的表字段字符的大小写转换,或原样使用列信息
PDO::ATTR_CASE => PDO::CASE_LOWER,
// 执行出错时抛出异常
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
// 将返回的空字符串转换为 SQL 的 NULL
PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,
// 返回数据的时候不将数值转换为字符串
PDO::ATTR_STRINGIFY_FETCHES => false,
// 设置为false禁止PDO模拟预处理语句,而使用真正的预处理语句,即有MySQL执行预处理语句
PDO::ATTR_EMULATE_PREPARES => false,
));
$sql = 'SELECT adtuu_uuid, adtuu_name FROM blog_adtuu WHERE adtuu_uuid = ? AND adtuu_name = ?';
$q = $dbConn->prepare($sql);
$id = 1;
$name = 'adtuu';
//$q->bindParam(1, $id);
//$q->bindParam(2, $name);
$i = 1;
foreach (array(1, 'adtuu') as &$bind) {
$q->bindParam($i, $bind);
$i++;
}
$result = $q->execute() ? $q->fetch(PDO::FETCH_ASSOC) : array();
$q->closeCursor();
var_dump($result);
//假设数据库中存在有id为1,name为adtuu的数据
//大家觉得上面的查询能够查出数据来吗???
//答案当然是否定的,为什么呢?
//原来是bindParam中第二个参数要是引用值才行
//需要修改成下面的
$i = 1;
foreach (array(1, 'adtuu') as &$bind) {
$q->bindParam($i, $bind);
$i++;
}
//注意&$bind
//当然还有更简单的方法,就是抛开循环直接将参数传入execute中
$result = $q->execute(array(1, "adtuu's")) ? $q->fetch(PDO::FETCH_ASSOC) : array();