[英]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
单引号'
,如果他们是VARCHAR
或CHAR
类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.