PHP PDO准备语句MySQL计数选择X LIKE
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP PDO准备语句MySQL计数选择X LIKE,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1443字,纯文字阅读大概需要3分钟。
内容图文
![PHP PDO准备语句MySQL计数选择X LIKE](/upload/InfoBanner/zyjiaocheng/892/428d18b475aa49adb1d18eafed5fb049.jpg)
使用PHP v.5.2.14和PDO-MySQL扩展.
我是准备好的陈述的新手.需要创建一个搜索表单(如此用户输入)和一个工作查询“选择所有X其中X喜欢…”的多样性.
代码和结果:
$sql = 'SELECT COUNT(*) as num_books from t_books where title LIKE :search_term';
// Later access as num_books
$prep = $dbh->prepare($sql);
$num = $prep->execute(array(':search_term' => '%'.$search_term. '%'));
$total=$num->fetchColumn();
$prep的Var转储:
object(PDOStatement)#2(1){[“queryString”] => string(58)“SELECT COUNT(*)from t_books where title LIKE:search_term”}
致命错误:在非对象上调用成员函数fetchColumn()
如果$prep是一个对象,那么$num应该是一个对象.但它是布尔值(true).这里发生了什么?
但更重要的是,我该如何计算呢?
我读了Row count with PDO – .那些建议对我不起作用,因为我需要准备好的声明.会有用户输入.
谢谢你的帮助.
解决方法:
PDOStatement::execute()只返回一个表示成功或失败的布尔值,因此你的变量$num不是你想要的.通过将结果赋值给$num,您不是分配对象$prep,而是仅将方法调用的返回值赋给execute()(TRUE).
而是来自$prep的fetchColumn(),您的PDOStatement对象.
$num = $prep->execute(array(':search_term' => '%'.$search_term. '%'));
if ($num) {
$total = $prep->fetchColumn();
}
除此之外,您的SQL应该正确执行,它返回的一列应该包含您需要的计数.
在这种情况下(特别是因为你在没有参数的情况下调用fetchColumn())并不重要,但对于将来的读者,建议使用别名命名COUNT()聚合,然后可以在关联或对象中使用取:
$sql = 'SELECT COUNT(*) AS num_books from t_books where title LIKE :search_term';
// Later access as num_books
内容总结
以上是互联网集市为您收集整理的PHP PDO准备语句MySQL计数选择X LIKE全部内容,希望文章能够帮你解决PHP PDO准备语句MySQL计数选择X LIKE所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。