添加where子句到动态选择sql

时间:2017-12-16 11:10:06

标签: php mysql sql

在网店管理员中,我列出了来自sql的订单。在这里,我也有一个搜索表单,我输入一个关键字,然后开始搜索。

现在,我在表单中添加了日期和日期结束输入。如果管理员输入日期而不仅仅是关键字,我如何将这些添加到sql select中?

<td style="text-align: center;">
    <input type="text" name="date_from" value="<?php if(isset($_POST['date_from'])) { echo $_POST['date_from'];} ?>" size="7"  class="datepicker">
    <span> - </span>
    <input type="text" name="date_end" value="<?php if(isset($_POST['date_end'])) { echo $_POST['date_end'];} ?>" size="7"  class="datepicker">
</td> 

$sql = "SELECT rendeles_user_id , rendeles_id, nev, status, vegosszeg,br_vegosszeg, datum, ido, egyeb FROM rendeles_adatok WHERE $kereses_helye LIKE '%$kw%' ORDER BY $kereses_rendezes $kereses_sorrend";

$kereses_helye表示我想要搜索的位置。 (用户名,订单ID,电子邮件....)

1 个答案:

答案 0 :(得分:1)

你可以根据POST日期值的存在在sql语句之前构建where子句 - 它不漂亮,这和原始代码很容易被sql注入。我在查询中假设(可能不正确)列datum是db

中的日期列
$where = !empty( $_POST['date_from'] ) && !empty( $_POST['date_end'] ) ? "where `$kereses_helye` like '%$kw%' and `datum` between '{$_POST['date_from']}' and '{$_POST['date_end']}' " : "where `$kereses_helye` like '%$kw%'";

$sql = "select 
    rendeles_user_id,
    rendeles_id,
    nev,
    status,
    vegosszeg,
    br_vegosszeg,
    datum,
    ido,
    egyeb 
    from rendeles_adatok 
    {$where}
    order by $kereses_rendezes $kereses_sorrend";