开发者社区> 问答> 正文

请教如何获取prepare后的SQL?

$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还是不行?非要我指定一个绑定类型?

展开
收起
落地花开啦 2016-06-14 11:25:42 2170 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

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

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

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

    2019-07-17 19:37:05
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spark SQL最佳实践 立即下载
GeoMesa on Spark SQL 立即下载
PolarDB NL2SQL: 帮助您写出准确、优化的SQL 立即下载