Php 搜索多个值(如果存在)

Php 搜索多个值(如果存在),php,sql,Php,Sql,对不起,我的英语很差。。。。 如何从db SQL中搜索多个值,以便有任何值。 我可以一起搜索姓名和家庭,但 我想当用户正确搜索姓名和家庭假期时返回空结果 我怎么写这个 if (isset($_POST['searchname']) || isset($_POST['searchfamily'])) { $sql = "select * from myinfo WHERE name='{$_POST['searchname']}' && family='{$_POST['se

对不起,我的英语很差。。。。 如何从db SQL中搜索多个值,以便有任何值。 我可以一起搜索姓名和家庭,但 我想当用户正确搜索姓名和家庭假期时返回空结果 我怎么写这个

if (isset($_POST['searchname']) || isset($_POST['searchfamily'])) {
   $sql = "select * from myinfo WHERE name='{$_POST['searchname']}' && family='{$_POST['searchfamily']}' ORDER BY id DESC";
}
else {
   $sql = "select * from myinfo ORDER BY id DESC";
}

如果您想同时使用这两种方法进行搜索,则还需要更改If。并将查询中的
&&
更改为

if (isset($_POST['searchname']) && isset($_POST['searchfamily'])) {

$sql = "select * from myinfo WHERE `name`='{$_POST['searchname']}' AND family='{$_POST['searchfamily']}' ORDER BY id DESC";
    }
else {

$sql = "select * from myinfo ORDER BY id DESC";

}
编辑

根据您的评论,尝试以下方法:

if (isset($_POST['searchname']) || isset($_POST['searchfamily'])) {
  $where="";
  if(isset($_POST['searchname']))
    $where=" WHERE `name`='{$_POST['searchname']}'";
  if(isset($_POST['searchfamily']))
  {
    if($where=="")
      $where=" WHERE family='{$_POST['searchfamily']}'";
    else
      $where=" AND family='{$_POST['searchfamily']}'";
  }
  $sql = "select * from myinfo $where ORDER BY id DESC";
}
else {

  $sql = "select * from myinfo ORDER BY id DESC";

}

你的三个主要问题在这里

第一个是
WHERE name=
now<代码>名称
已经被mysql使用,因此您不应该使用它。。如果确实使用它,请按如下方式运行:

WHERE `name`=
您应该始终对数据库表和列进行反勾选,以使长期使用更加方便

第二个问题是您使用了
&&
,它应该在

第三个问题是,您不应该将变量直接放入查询中,因为您需要打开SQL注入

现在,我假设您正在使用
$mysqli
作为变量,但这可能需要调整以适应您正在使用的正确变量:

if (isset($_POST['searchname']) || isset($_POST['searchfamily'])) {

    $searchName = $_POST['searchname'];
    $family = $_POST['searchfamily'];

    $sql = $mysqli->prepare("select * from `myinfo` WHERE `name` = ? OR `family`= ? ORDER BY `id` DESC");
    $sql->execute([$searchName, $family]);
} else {

    $sql = $mysqli->prepare("select * from `myinfo` ORDER BY `id` DESC");
    $sql->execute();

}

您的代码在哪里,您尝试了什么?
您可以使用像“%jones%”这样的名称或像“%jones%”这样的家族。
您应该使用它们,而不是连接查询。特别是因为你根本没有逃避用户的输入!我编辑我的问题并添加我的代码我不想使用“或”,因为如果我想在查询中同时使用这两个选项,那么您错过了一个重要部分;-)<代码>名称=
我想搜索名称或搜索族或两者都搜索。。。。正确工作。。。此cod仅适用于同时输入nama和family时,但我只搜索名称。此代码不起作用,与我的代码无关。只有当两个人都输入了姓和名时,这才是真的……你在问什么错了。。我们指出了问题所在,然后你就争辩?为什么要求从开始?因此,将
更改为
-我在示例中更新了这一点,如果我在搜索姓名用户1和搜索家庭用户2时使用“或”。resualt是用户1和用户2。我不要这个