php - 动态向sql select添加where子句

标签 php mysql sql

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

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

<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、电子邮件......)

最佳答案

您可以根据 POST 日期值的存在在 sql 语句之前构建 where 子句 - 这并不漂亮,而且此代码和原始代码容易受到 SQL 注入(inject)的攻击。我在查询中假设(可能错误地)datum 列是数据库中的日期列

$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";

关于php - 动态向sql select添加where子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47845017/

相关文章:

php - 教义中的并发

MySQL 事件调度程序不工作,但一切都已设置

mysql - 将数据从csv文件插入表时使用mysql jdbc出现数据截断错误

sql - 以编程方式生成 SQL 脚本以在没有 PRIMARY 语句的情况下创建数据库..使用脚本程序

php - UTF-8贯穿始终

php - WP_Query() 不返回所有条目

php - 在数据库codeigniter中插入多个值?

php - mysql 到 mysqli 类函数转换

.net - 在 .NET 中以编程方式检索数据库表创建脚本

sql - Rails 查询到 SQL 语句