【问题标题】:How to make form with many query PHP MYSQL如何使用许多查询 PHP MYSQL 制作表单
【发布时间】:2018-01-09 10:51:16
【问题描述】:

如何从php和mysql中的输入中生成多个查询的FORM,我应该只使用查询还是使用多个条件来进行最终查询,这是表单的示例:

可能是这样的

SELECT * FROM aset WHERE lokasi= .. OR jenis=.. OR merk=.. OR tanggal=..

如果FORM中的输入为NULL,如何跳过WHERE子句之一?


谢谢!

【问题讨论】:

  • 抱歉,不清楚您在问什么
  • 可能是您正在搜索的查询中的LIKE
  • 您是否希望过滤器额外添加(因此,如果用户键入“lokasi”和“jenis” - 它应该同时匹配两者吗?应该只匹配 kindof?应该匹配其中一个或?
  • 所以这里的示例条件1:lokasi、merk、jenis、tanggal都填充了数据,然后查询是SELECT * FROM aset WHERE lokasi= .. OR jenis=.. OR merk=.. OR tanggal=.. 条件2:只有lokasi merk 填充数据,查询是SELECT * FROM aset WHERE lokasi= .. OR merk=.. 谢谢!
  • 您可以在默认情况下执行 where 1=2,然后为每个输入添加 `OR x=input1`(如果已填写)。(如果其他条件应为 AND,则为 where 1=1)跨度>

标签: php html mysql twitter-bootstrap


【解决方案1】:

您可以先检查该字段是否已给定/是否有任何值,然后将其添加到查询中,这样您就可以使用附加“=”传递仅提供的字段的查询。要添加的运算符。

$query = "SELECT * FROM aset";

if($_POST['lokasi'] != ''}{

 $query =. "WHERE lokasi ='something'";

}

 if($_POST['jenis'] != ''}{

    if (strpos($query, "lokasi") !== false) //if lokasi exists in the query then add AND
    {
      $query =. " AND WHERE jenis ='something'";

    } else {

    $query =. " WHERE jenis ='something'";

    }

}

【讨论】:

  • 是的,谢谢,但是在mysql中,如果条件为NULL,是否可以跳过WHERE?
  • 是的,例如,如果您在 4 个字段中没有任何值的情况下单击“搜索”按钮,则查询将选择“aset”表中的所有行,因为查询将仅包含“SELECT * FROM资产";
  • 是的,我的意思是在查询中跳过,例如:WHERE lokasi = SKIP 什么的,所以我们只需要进行 1 次查询,而无需在 php 中创建很多条件
  • 是的,我明白了,你的意思是如果只给出“lokasi”字段而其余 3 个为空,那么查询应该只有 WHERE lokasi = 'something' 对吗?
  • 你不能做 WHERE lokasi = SKIP,而是你必须根据条件构建查询
【解决方案2】:

您应该或简单地将表列设置为 DEFAULT NULL,其中每次将记录插入表时,如果表单中有跳过字段,它仍会将查询插入表中。

例如当你创建一个表时。

create table sample(id int(11) not null auto_increment,sample_column_1 varchar(255) default null,sample_column_2 varchar(255) default null,primary key(id));

【讨论】:

  • 为什么搜索需要创建一个完整的其他表?
猜你喜欢
  • 2015-03-23
  • 2016-12-24
  • 2020-11-14
  • 1970-01-01
  • 2011-10-09
  • 2018-02-15
  • 1970-01-01
  • 2015-09-29
  • 1970-01-01
相关资源
最近更新 更多