您好,我想知道如何转换以下代码以使用BindValues并完成相同的工作。

$sql = "SELECT * FROM documents WHERE 1";
if (!empty($topic)) {
    $sql .= " AND topic = '$topic' ";
}
if (!empty($date )) {
    $sql .= " AND date LIKE '%$date%' ";
}

WHERE子句只应用于填充的输入
所以我的问题是如何将此代码转换为以下查询
$sql = new page($pages "SELECT *
                        FROM table
                        WHERE topic LIKE :topic
                           OR date LIKE :date ", $option);

$sql ->BindValue(':topic ', $_POST['topic '], PDO::PARAM_STR);
$sql ->BindValue(':date ', $_POST['date  '], PDO::PARAM_STR);

最佳答案

SELECT * FROM table
WHERE (:topic is null or topic LIKE :topic)
  AND (:date is null or date LIKE :date)

关于php - PDO如何检查输入是否为空而不使用WHERE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31755735/

10-13 00:51