zoukankan      html  css  js  c++  java
  • php PDO遇到的坑

    <?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();
    

      

  • 相关阅读:
    AlertDialog弹出退出对话框和图片对话框
    android 真机配置
    Intent传递对象的两种方法(Serializable,Parcelable)
    COM入门简介
    WinRT简介
    什么是Windows服务
    C++更改控制台输出颜色
    在线编译器
    软件制作:QQGamePlug Lianliankan Plug
    网络安全:WinRAR命令行压缩
  • 原文地址:https://www.cnblogs.com/adtuu/p/7471817.html
Copyright © 2011-2022 走看看