我遇到了相当简单的查询!
简而言之,我创建了一个搜索(过滤器)面板,现在我正在向它添加分页。
我在返回当前查询中的行数时遇到问题,主要取决于动态变化的$detailed_search_query
变量。
我需要进行以下工作,并正确添加 COUNT() ,因此新行总数将包含unique_id
's 的总数。
当前 SQL:
$sql = $db->prepare( "
SELECT
individuals.individual_id,
individuals.unique_id,
individuals.fullname,
individuals.day_of_birth,
TIMESTAMPDIFF(YEAR,individuals.day_of_birth,CURDATE()) AS age,
individuals.gender,
individuals.record_timestamp,
individuals.active,
individuals.deleted,
individuals_dynamics.weight,
individuals_dynamics.degree,
individuals_dynamics.trainer_name
FROM
individuals as individuals
LEFT JOIN
individuals_dynamics AS individuals_dynamics ON individuals.unique_id = individuals_dynamics.individual_id
WHERE
$detailed_search_query $display recognized = 'yes'
GROUP BY
individuals.record_timestamp
ORDER BY $by $how
LIMIT " . $limit);
如果我将 COUNT() 添加到它,我有 PDO 错误说Fatal error: Call to a member function execute() on a non-object
。
这就是我的新查询(刚刚开始,其余部分相同)的样子,它返回上面的错误:
$sql = $db->prepare( "
SELECT
COUNT(individuals.unique_id),
individuals.individual_id,
individuals.unique_id,
individuals.fullname,
individuals.day_of_birth,
我在这里想念什么?
编辑1:
我如何使用 COUNT() 的示例会生成有效的普通预查询:
$sql = $db->prepare("SELECT count(unique_id) FROM individuals");
$sql->execute();
$total = $sql->fetchColumn();
$pagination = new Pagination($paginate_number);
$limit = $pagination->getLimit($total);
编辑2:
是的,对,当我添加别名时返回相同的错误,例如:
$sql = $db->prepare( "
SELECT
COUNT(individuals.unique_id) as total,
individuals.individual_id,
编辑 3:
这是我对最后一次编辑的不好,如果你添加别名,比如总计,那么查询工作但它只计算当前行并返回 1,但我需要总行数,例如:
Array
(
[0] => Array
(
[total] => 1
[0] => 1
[individual_id] => 51
[1] => 51
[unique_id] => f598edae
[2] => f598edae
编辑4:
当 PHP 变量被替换时,我在 WHERE 子句中有类似的内容:
WHERE
individuals.fullname LIKE '%adam%' AND individuals_dynamics.degree BETWEEN '1' AND '3' AND EXTRACT(YEAR FROM (FROM_DAYS(DATEDIFF(NOW(),individuals.day_of_birth))))+0 BETWEEN '7' AND '10' AND individuals_dynamics.weight BETWEEN '20' AND '40' AND individuals_dynamics.degree BETWEEN '7' AND '10' AND deleted != 'yes' AND active != 'no' AND recognized = 'yes'
GROUP BY
individuals.record_timestamp
编辑 5:
期望的结果是在最终数组中包含键总数,这将表示基于动态 PHP 变量在当前查询中提取的结果总量,例如$detailed_search_query
和$display
:
现在我总有 1 个。什么时候应该是 75:
Array
(
[0] => Array
(
[total] => 1
[0] => 1
[individual_id] => 71
[1] => 71
[unique_id] => f598e2ae
[2] => f598e2ae
[fullname] => Name2 Name2 Name2
)
[1] => Array
(
[total] => 1
[0] => 1
[individual_id] => 65
[1] => 65
[unique_id] => b76497ca
[2] => b76497ca
)