Php 在表中找不到匹配项时,如何显示MySQL结果?

Php 在表中找不到匹配项时,如何显示MySQL结果?,php,mysqli,Php,Mysqli,我编写了下面的查询函数,用户可以通过一个表单访问该函数,在该表单中,用户从下拉列表中选择一项技能,并且必须输入一个城市。当技能和城市匹配时,结果将正确显示。代码如下: function search() { $city=$_POST['city']; if(!isset($_POST['city'])) echo "You must enter a city to find a match."; $sql = "SELECT skill.s

我编写了下面的查询函数,用户可以通过一个表单访问该函数,在该表单中,用户从下拉列表中选择一项技能,并且必须输入一个城市。当技能和城市匹配时,结果将正确显示。代码如下:

function search() {
    $city=$_POST['city'];
    if(!isset($_POST['city'])) echo "You must enter a city to find a match.";

    $sql = "SELECT skill.skill_name, team.city FROM skill INNER JOIN team ON skill.skill_id=team.skill WHERE skill.skill_name LIKE '$skill' AND city LIKE '$city' ";
    foreach ($myconnect->query($sql) as $row) {
      if($sql) {
          echo $skill . " is available in " . $row['city'];
      }
      else {
         if(!$sql)
            echo "No result found.";
         }
      }
  }//submit
}

澄清:当找到匹配项时,代码会正确显示消息。但是,当没有匹配项时,它不会显示未找到结果的消息。

有太多错误答案,因此值得编写一个正确的答案

$sql = "SELECT s.skill_name, t.city FROM skill s JOIN team t ON s.skill_id=t.skill 
        WHERE s.skill_name = ? AND city = ?";
$stmt = $myconnect->prepare($sql);
$stmt->bind_param("ss", $_POST['skill'], $_POST['city']);
$stmt->execute();
$data = $stmt->get_result()->fetch_all();
if (!$data) {
    echo "No result found.";
} else {
    foreach ($data as $row) {
        echo htmlspecialchars($row['skill_name']) . " is available in " . htmlspecialchars($row['city']);
    }
}

有太多的错误答案,所以值得写一个正确的

$sql = "SELECT s.skill_name, t.city FROM skill s JOIN team t ON s.skill_id=t.skill 
        WHERE s.skill_name = ? AND city = ?";
$stmt = $myconnect->prepare($sql);
$stmt->bind_param("ss", $_POST['skill'], $_POST['city']);
$stmt->execute();
$data = $stmt->get_result()->fetch_all();
if (!$data) {
    echo "No result found.";
} else {
    foreach ($data as $row) {
        echo htmlspecialchars($row['skill_name']) . " is available in " . htmlspecialchars($row['city']);
    }
}

实际问题是什么?我不明白标题:这是你想要的,还是现在正在发生的事情<代码>如果($sql)?从MySQL获取零行不会从PHP变量中删除SQL代码。此条件应该检查什么,
if($SQL)
?警告:使用
mysqli
时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
数据直接放入查询中,如果有人试图利用您的错误,这可能非常有害。@您的常识,谢谢您的输入。我刚刚用你的脚本替换了我的脚本,现在我得到了所有查询的“未找到结果”,无论是否存在匹配。你能解释一下发生了什么事吗?我不熟悉语法和s、t等,因此我不知道如何进行调整。实际问题是什么?我不明白标题:这是你想要的,还是现在正在发生的事情<代码>如果($sql)?从MySQL获取零行不会从PHP变量中删除SQL代码。此条件应该检查什么,
if($SQL)
?警告:使用
mysqli
时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
数据直接放入查询中,如果有人试图利用您的错误,这可能非常有害。@您的常识,谢谢您的输入。我刚刚用你的脚本替换了我的脚本,现在我得到了所有查询的“未找到结果”,无论是否存在匹配。你能解释一下发生了什么事吗?我不熟悉语法和s、t等,所以我不知道如何进行调整。完美无瑕。我删除了我的答案,只是为了让你的答案更清晰:)完美无瑕。我删除了我的答案,只是为了让你的答案更清晰:)