php - 怎么获取prepare后的SQL
迷茫
迷茫 2017-04-10 14:26:32
[PHP讨论组]
$db = new PDO();
$sth = $db->prepare('sql');

// 有木有一个类似getSql的方法可以获取执行的SQL的= =

然后

$db = new PDO();
$sth = $db->prepare('select * from `table` where p1 = :p1 limit :limit');

$sth->bindValue(':p1',$var_p1,PDO::PARAM_INT);
$sth->bindValue(':limit',$var_limit,PDO::PARAM_INT);
# ^ 这样正确

$sth->execute(array(intval($var_p1),intval($var_limit));
# ^ 为毛报错?,execute中,转成int还是不行?非要我指定一个绑定类型?
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(1)
怪我咯

不是类型的问题,仔细看看文档:http://cn2.php.net/manual/zh/pdostatement.execute.php

你这种execute调用方法,prepare时,要使用问号占位符;既然用了“冒号参数名”的方式,execute时传递的数组也要使用冒号参数名作为数组下标。

另外,你是想获取将占位符替换成实际参数值之后的SQL语句吗?PDO是办不到的,因为prepared statement本质上是一种临时的存储过程

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号