Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在准备语句的where子句中使用计数值_Php_Mysql_Sql_Pdo - Fatal编程技术网

Php 在准备语句的where子句中使用计数值

Php 在准备语句的where子句中使用计数值,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,我正在尝试创建一个语句,该语句将返回按(用户名、事件标题和事件目标)分组并按该计数排序的事件目标的计数 换句话说,totalsum是(username、event\u title和event\u target)都是相同值的行数 问题是结果在DESC中不是按totalsum排序的 $stmt = $db->prepare("SELECT *, COUNT(`event_target`) 'totalsum' FROM `testdb` WHERE `account_id` = ? GROUP

我正在尝试创建一个语句,该语句将返回按(
用户名、事件标题和事件目标)分组并按该计数排序的
事件目标的计数

换句话说,
totalsum
是(
username、event\u title和event\u target
)都是相同值的行数

问题是结果在DESC中不是按totalsum排序的

$stmt = $db->prepare("SELECT *, COUNT(`event_target`) 'totalsum' FROM `testdb` WHERE `account_id` = ? GROUP BY `username`, `event_title`, `event_target` ORDER BY 'totalsum' DESC"); 
$stmt->execute(数组($\会话['user']['account\u id'])

$stmt->execute(数组($\会话['user']['account\u id'])

我遇到了另一个问题。我之所以询问
totalsum
的条件,是因为这是对搜索函数的修改。所以典型的搜索查询可能如下所示:

SELECT *, COUNT(`event_target`) 'totalsum' FROM `testdb` WHERE `account_id` = ? GROUP BY `username`, `event_title`, `event_target` ORDER BY 'totalsum' DESC
如何为
totalsum
添加or条件?这可能是一个不好的例子,但如果有人搜索“6”,那么任何值为6的
totalsum
结果也应该返回。在一个完美的世界里,我希望能够做到:

SELECT *, COUNT(`event_target`) `totalsum` FROM `testdb` WHERE `account_id` = ? GROUP BY `username`, `event_title`, `event_target` ORDER BY `totalsum` DESC

您对
totalsum
使用了错误的引号:

SELECT *, COUNT(`event_target`) `totalsum` FROM `testdb` WHERE `account_id` = ?
  GROUP BY `username`, `event_title`, `event_target` HAVING `totalsum`=6
应该是:

SELECT 
    *,
    COUNT(`event_target`) 'totalsum' 
FROM 
    `testdb` 
WHERE 
    `account_id` = ? 
GROUP BY 
    `username`,
    `event_title`,
    `event_target`
HAVING 
    COUNT(`event_target`) = 6 
ORDER BY
    'totalsum' DESC
尽管在这里,如果你想的话,你可以把它们删掉

要按
totalsum
筛选结果,可以执行以下操作:


您对
totalsum
使用了错误的引号:

SELECT *, COUNT(`event_target`) `totalsum` FROM `testdb` WHERE `account_id` = ?
  GROUP BY `username`, `event_title`, `event_target` HAVING `totalsum`=6
应该是:

SELECT 
    *,
    COUNT(`event_target`) 'totalsum' 
FROM 
    `testdb` 
WHERE 
    `account_id` = ? 
GROUP BY 
    `username`,
    `event_title`,
    `event_target`
HAVING 
    COUNT(`event_target`) = 6 
ORDER BY
    'totalsum' DESC
尽管在这里,如果你想的话,你可以把它们删掉

要按
totalsum
筛选结果,可以执行以下操作:

试试这个:

试试这个:


有从句怎么样?有从句怎么样?学到了一些新东西。。。类似于
拥有计数(
事件目标
)的东西也像一些值一样工作吗?哼,你正在使用like比较一个整数,你最好使用
拥有计数(事件目标)在5和7之间
学习一些新东西。。。类似于
拥有计数(
事件\目标
)和类似于某个值
的东西是否也起作用?哼,您正在使用like比较一个整数,您最好使用
拥有5到7之间的计数(事件\目标)
SELECT *, COUNT(`event_target`) 'totalsum' FROM `testdb` WHERE `account_id` = ? GROUP BY `username`, `event_title`, `event_target` ORDER BY 'totalsum' DESC
SELECT *, COUNT(`event_target`) `totalsum` FROM `testdb` WHERE `account_id` = ? GROUP BY `username`, `event_title`, `event_target` ORDER BY `totalsum` DESC
SELECT *, COUNT(`event_target`) `totalsum` FROM `testdb` WHERE `account_id` = ?
  GROUP BY `username`, `event_title`, `event_target` HAVING `totalsum`=6
SELECT 
    *,
    COUNT(`event_target`) 'totalsum' 
FROM 
    `testdb` 
WHERE 
    `account_id` = ? 
GROUP BY 
    `username`,
    `event_title`,
    `event_target`
HAVING 
    COUNT(`event_target`) = 6 
ORDER BY
    'totalsum' DESC