我正在尝试制作一个测试应用程序,我需要从数据库中检索“n”个问题。我还需要用类别或困难过滤器过滤结果。
如果用户选择了一个类别,我没有任何问题(例如):

$size = $_POST['param0'];
$category = $_POST['param1'];

$stmt = $db->prepare("SELECT *
                      FROM questions_fr
                      WHERE categories = :categories
                      LIMIT 0, $size");

$stmt->bindparam(":category", $category);
$stmt->execute();

但如果他想要所有的类别呢?
我能做些类似的事情在我的php文件中只做一个查询吗?
$stmt = $db->prepare("SELECT *
                      FROM questions_fr
                      WHERE categories = * (here, select all the categories)
                      LIMIT 0, $size");

还是我应该做这样的事?
(pseudocode)
if ($category != "all_categories")
{
    $stmt = $db->prepare("SELECT *
                          FROM questions_fr
                          WHERE categories = :categories
                          LIMIT 0, $size");
}
else if ($category == "all_categories")
{
    $stmt = $db->prepare("SELECT *
                          FROM questions_fr
                          LIMIT 0, $size");
}

最佳答案

如果选择“所有类别”,请将category变量设置为通配符并使用LIKE子句。

if ($category == "all_categories") {
    $category = '%';
}

...

SELECT *
FROM questions_fr
WHERE categories LIKE :categories
LIMIT 0, $size

10-08 08:08
查看更多