繁体   English   中英

MySQL查询不同的输入字段,其中一些为NULL

[英]MySql query on different input fields where some of them are NULL

您好我在输入表单上有3个字段,这些字段通过POST方法设置为外部php

 $id=$_POST['id']; 
 $nombre=$_POST['nombre']; 
 $cedula=$_POST['cedula']; 

我想根据哪个字段内部有数据,还是用户将数据全部放在3个字段中还是仅将2个字段中的数据作为搜索选项,以便从同一表中不是NULL字段的输入字段中进行搜索结果。

我的sql查询类似$sql = "SELECT * FROM users WHERE userID = $id AND nombre = $nombre AND cedula = $cedula) ";

显然这不起作用,我应该怎么做才能使其起作用。 我是否只需要更改查询,还是需要在查询之前添加一些内容以首先检查什么不是NULL。 谢谢

尝试添加报价:

$sql = "SELECT * FROM users WHERE userID = ".$id." AND nombre = ".$nombre." AND pass = '".$pass."' ";

首先,应更新您的SQL语句,以在字符串值周围包含' (逗号)。

因此,将其修改为:

$sql = "SELECT * FROM users WHERE userID = '$id' AND nombre = '$nombre' AND pass = '$pass'";
// ----------------------------------------^---^--------------^-------^------------^-----^

第二件事是,仅当字段具有值时才应搜索该字段,否则将无用。

因此,修改后的PHP代码应为:

$sql = "SELECT * FROM users WHERE 1 ";

if (!empty($id)) {
  $sql .= " AND userID = '$id' ";
}
if (!empty($nombre)) {
  $sql .= " AND nombre= '$nombre' ";
}
if (!empty($pass)) {
  $sql .= " AND pass= '$pass' ";
}

并且只有在表单中填写了数据时,才会在数据库中搜索这些字段。

是的,您需要先进行检查,然后再忽略所有为空的字段。

此外,你需要把$variable单引号' ,如果他们是VARCHARCHAR类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM