添加WHERE导致COUNT查询

时间:2015-03-14 00:35:17

标签: 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")

1 个答案:

答案 0 :(得分:0)

您可以在双引号内使用变量,但必须使用连接才能在单引号内使用一个变量。 (例如...'我的字符串'。$ 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();

OR

 $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();

您使用半冒号终止,然后尝试调用对象方法。