gpt4 book ai didi

PHP PDO Prepared Statement MySQL Count of Select where X LIKE

转载 作者:可可西里 更新时间:2023-11-01 07:59:35 25 4
gpt4 key购买 nike

使用 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"}

fatal error :在非对象上调用成员函数 fetchColumn()

如果 $prep 是一个对象,那么 $num 应该是一个对象。但它是 bool 值(真)。这里发生了什么?

但更重要的是,我该如何计数?

我读了Row count with PDO -.那里的建议对我不起作用,因为我需要准备好的陈述。将有用户输入。

感谢您的帮助。

最佳答案

PDOStatement::execute()只返回一个表示成功或失败的 bool 值,所以你的变量 $num 不是你想要获取的。通过将结果分配给 $num,您并不是在分配对象 $prep,而只是分配给 execute() ()。

相反,fetchColumn()来自 $prep,您的 PDOStatement 对象。

$num = $prep->execute(array(':search_term' => '%'.$search_term. '%'));
if ($num) {
$total = $prep->fetchColumn();
}

除此之外,您的 SQL 应该正确执行并且它返回的一列应该包含您需要的计数。

在这种情况下(特别是因为您正在调用不带参数的 fetchColumn())这无关紧要,但对于 future 的读者来说,建议将 COUNT() 聚合一个别名,然后可以在关联或对象获取中使用:

$sql = 'SELECT COUNT(*) AS num_books from t_books where title LIKE :search_term';
// Later access as num_books

关于PHP PDO Prepared Statement MySQL Count of Select where X LIKE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12080750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com