• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

phpPDO遇到的坑

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
<?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();

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
php使用SImpleXMLElement把xml和数组互转发布时间:2022-07-10
下一篇:
PHP多种序列化/反序列化的方法json_encodejson_decode发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap