0

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

4

3 回答 3

0

尝试添加报价:

$sql = "SELECT * FROM users WHERE userID = ".$id." AND nombre = ".$nombre." AND pass = '".$pass."' ";
于 2013-10-05T18:26:45.450 回答
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' ";
}

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

于 2013-10-05T18:27:16.020 回答
0

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

此外,如果它们是或类型,则需要将它们放在$variable内部单引号中。'VARCHARCHAR

于 2013-10-05T18:29:52.443 回答