php - 将 WHERE 原因添加到 COUNT 查询

标签 php mysql pdo

我在将 where 子句纳入 COUNT 查询时遇到问题。

这可以获取表的总数:

   $search = $_POST['search_text'];  

    SELECT COUNT(*)
    FROM
    stories')
    ->fetchColumn();

但是,当我尝试添加 WHERE Stories.category = $search 时,当我尝试其中任何一个时,我会遇到语法错误:

$total = $dbh->query('
    SELECT
        COUNT(*)
    FROM
        stories
    WHERE
     stories.category = "$search"
');
->fetchColumn();



    FROM
        stories
    WHERE stories.category='$search'


    FROM
        stories
    WHERE (stories.category="$search")

最佳答案

您可以在双引号内使用变量,但必须使用串联才能在单引号内使用变量。 (例如 '我的字符串 '.$myvar.' 还有一些字符串')

SQL 需要格式为 '' 或 ""的字符串,因此您可以互换使用它们或使用转义引号...

你可以像这样在单引号和双引号内转义...

"   \"  <--- puts a quote in without terminating the string  "
'   \'  <--- same with single quotes '

$total = $dbh->query("
    SELECT
        COUNT(*)
    FROM
        stories
    WHERE
     stories.category = \"$search\"
")
->fetchColumn();

或者

 $total = $dbh->query("
        SELECT
            COUNT(*)
        FROM
            stories
        WHERE
         stories.category = '$search'
    ")
    ->fetchColumn();

或者

 $total = $dbh->query("
        SELECT
            COUNT(*)
        FROM
            stories
        WHERE
         stories.category = '".$search."'
    ")
    ->fetchColumn();

或者

$total = $dbh->query('
        SELECT
            COUNT(*)
        FROM
            stories
        WHERE
         stories.category = \''.$search.'\'
    ')
    ->fetchColumn();

而且,你不能这样做...

');
->fetchColumn();

您以分号终止,然后尝试调用对象方法。

关于php - 将 WHERE 原因添加到 COUNT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29044111/

相关文章:

php - 将显示一行的 wpdb 查询结果转换为单个变量(如果重要,请使用短代码)

php - 错误: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'rowid' in 'where clause'

php - 使用 google Analytics reporting api v4 时出错

Python3 与 sql 变量

MySQL 错误 1045 (28000) : Access denied for user 'bill' @'localhost' (using password: YES)

php - fine-uploader 无法使用 IE7 读取 iframe 响应

php - 非法字符串偏移量 'Name' 错误

php - 在 php 7.2 中启用 pdo_sqlsrv,不工作

php - 如何防止 MySQL 使用 PDO 更新带有空字符串的列

php - MySQL 回滚 PHP(不是 MySQL)错误