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

  

时间: 2024-07-30 13:36:38

php PDO遇到的坑的相关文章

阿里云centos7.2 搭建 laravel 框架走过的坑

centos7.2 搭建 laravel框架走过的坑 前言 公司正在处于发展阶段最近开发的伙伴和运维的伙伴一直在忙碌着 开发人员一直在写laravel架构的代码以及新项目的拓展,时间很赶所以作为linux运维的我也不能怠慢. 首先搭建lnmp架构 nginx php 我选择的yum,wget的安装方法 mysql选择编译安装 因为我只认为MySQL我还有编译安装的需要(熟悉熟悉). 准备 : 1.PHP 7版本  2.openssl(yum安装)3.pdo扩展 mysql 4.安装compose

[PDO绑定参数]使用PHP的PDO扩展进行批量更新操作

最近有一个批量更新数据库表中某几个字段的需求,在做这个需求的时候,使用了PDO做参数绑定,其中遇到了一个坑. 方案选择 笔者已知的做批量更新有以下几种方案: 1.逐条更新 这种是最简单的方案,但无疑也是效率最低的方案. 2.CASE WHEN 类似如下的语句 UPDATE tbl_test SET val = CASE id WHEN 1 THEN 2 WHEN 2 THEN 3 END WHERE id IN(1, 2); PDO绑定参数 为了防止SQL注入,使用了PDO扩展绑定参数.上面的数

网站云服务器迁移时遇到的坑

本文主要讲网站程序在云服务器迁移时遇到的问题,和各家云服务的比较选择. 之前用laravel 5.1开发了一个社区交流的程序,放在亚马逊的EC2实例上,是一个AIM 亚马逊自家构建的linux服务器,不能不说亚马逊的服务是一流的,基本没有多少坑给你踩,但是自从发现 linode, DigitalOcean, Rackspace之后,比较了一下性价比,就有了迁移的想法,毕竟便宜了一半. linode.com比较有历史,而且套餐是2G内存,24G SSD硬盘,10美金一个月怎么样都比亚马逊要来得实惠

馗诿孟植乒坑尘百富视合

IEEE Spectrum 杂志发布了一年一度的编程语言排行榜,这也是他们发布的第四届编程语言 Top 榜. 据介绍,IEEE Spectrum 的排序是来自 10 个重要线上数据源的综合,例如 Stack Overflow.Twitter.Reddit.IEEE Xplore.GitHub.CareerBuilder 等,对 48 种语言进行排行. 与其他排行榜不同的是,IEEE Spectrum 可以让读者自己选择参数组合时的权重,得到不同的排序结果.考虑到典型的 Spectrum 读者需求

swoole结合php的pdo mysql模式出现MySQL server has gone away

mysql做为php的黄金搭档和互联网上应用最广泛的数据库,免不了天天与之打交道,不少朋友在熟悉swoole的使用之后,也趟平了不少坑,准备实战了,终于上线了,正愉快的体验swoole带来的巨大改进,突然数据库操作bug了,大量报mysql server gone away, 于是swooler心里千万之草尼马奔腾而过,大骂,swoole误我--- 且慢!!!这真不是swoole的问题!!!!不是swoole的问题!!!!不是swoole的问题!!!!(重要的事情说三遍) 原因     不是sw

移动端点击事件全攻略,有你知道与不知道的各种坑

看标题的时候你可能会想,点击事件有什么好说的,还写一篇攻略?哈哈,如果你这么想,只能说明你too young to simple. 接触过移动端开发的同学可能都会面临点击事件的第一个问题:click事件的300ms延迟响应.不能立即响应给体验造成了很大的困扰,因此解决这个问题就成为了必然. 这个问题的解决方案就是: zepto.js的tap事件.tap事件可以理解为在移动端的click事件,而zepto.js因为几乎完全复制jQuery的api,因此常常被用在h5的开发上用来取代jquery.

[原创] 关于免费VPN我踩过的那些坑

关于免费VPN我踩过的那些坑 因为工作的关系,笔者经常需要用到VPN, 访问国外国网站,你懂的. 我曾经试着自己购买VPS搭建过VPN, 被封了后就没心情再维护了,毕竟直接买VPN比VPS便宜太多.时间一长,也就有了一些经验. 这里总结成表格的形式,分享给大家: [NydusVPN] 知乎推荐的香港VPN, 比直通车好,线路稳定性好,办公游戏适合.注册前7天内可以无条件退款哦.  官方网站  [Astrill] 老牌VPN,但近两年被封底得太厉害,现在已经不太给力了. 注册第一个月能免费使用(付

Linux下GDB调试与对拍(先挖个坑)

应为NOIP要复赛在NOI-Linux下编写程序,所以被迫选择Vim+Gdb(主要是Guide太丑了). 虽然GUIDE的调试功能已经对付大多数的调试,反正学一学GDB的使用也没什么坏处. 1 生成调试信息 要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中.使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点.如: gcc -g hello.c -o hello g++ -g hello.cpp -o hello 如果没有-g,你将看不见程序的函数名.变量名,

Spring Cloud ZooKeeper集成Feign的坑2,服务调用了一次后第二次调用就变成了500,错误:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.n

错误如下: 2017-09-19 15:05:24.659 INFO 9986 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.spring[email protected]56528192: startup date [Tue Sep 19 15:05:24 CST 2017]; root of context hierarchy 2017-09-19 15:05:24.858 INFO 9986 --