将 WHERE 原因添加到 COUNT 查询

Adding WHERE cause to COUNT query

我无法将 where 子句作为 COUNT 查询的一部分。

这可以获取 table:

的总计数
   $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")

您可以在双引号内使用变量,但必须使用串联才能在单引号内使用变量。 (例如.. 'my string '.$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();

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