SQL 准备好的语句 select 所有结果都为 =

SQL Prepared statements select all result with =

所以我在 PHP 中使用准备好的语句发送 SQL 命令,其中有 5 个不同的匹配列。目标是应该有一个选项,如果只有一列是 selected,命令应该能够 运行。如果您选择所有 5 个不同的匹配列,这些选项也应该有效。

$sqlPrepared = $conn->prepare("SELECT * FROM crashes_history WHERE 
region = ? AND county = ? and crash_id = ?");
$sqlPrepared->bind_param("sssii", $region,  $county, $crash_id, 
$limit, $offset);

所以我所做的是,如果$region 不存在,我们将$region 参数设置为'region' 到select 所有结果。但不幸的是,这不适用于准备好的语句。

没有列被 select 编辑的示例(获取所有数据)

SELECT * FROM crashes_history WHERE region = region AND county = 
county and crash_id = crash_id

您可以在此处使用灵活的准备语句,它将忽略给定的列 NULL:

$sql = "SELECT *
        FROM crashes_history
        WHERE (region = ? OR ? IS NULL) AND
              (county = ? OR ? IS NULL) AND
              (crash_id = ? OR ? IS NULL)";
$sqlPrepared = $conn->prepare($sql);
$sqlPrepared->bind_param("ssssssii", $region, $region, $county, $county, $crash_id, $crash_id, $limit, $offset);