MySql查询不同的输入字段,其中一些是NULL

时间:2013-10-05 18:23:30

标签: php mysql

您好我在输入表单上有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。感谢

3 个答案:

答案 0 :(得分:0)

尝试添加引号:

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

答案 1 :(得分:0)

首先,应更新您的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' ";
}

只有在表单中填写了数据时,才会搜索数据库。

答案 2 :(得分:0)

是的,您需要先检查一下,否则会忽略空字段。

此外,如果$variable类型为'VARCHAR,则需要将CHAR置于单引号{{1}}内。

相关问题