Этот вопрос, кажется, был задан много раз, но ни один из ответов не работал на меня. Не считая числа или строк, ничего.
Я написал следующую функцию запроса для доступа к форме, в которой пользователь выбирает навык из выпадающего списка и должен ввести город. Результаты отображаются правильно, когда есть совпадение навыков и города. Вот код:
Как отобразить результаты MySQL, когда в таблицах не найдено совпадений
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
}
Можете ли вы помочь мне установить прямой?
Спасибо.
Чтобы уточнить: при обнаружении соответствия код правильно отображает сообщение. Но когда нет совпадения, он не отображает сообщение о том, что результат не найден.
Решение от @ your Common Sense с двумя небольшими изменениями: (1) к записи вар $ _POST [ «умение»] до $ _POST [ «навыки»] и вторя пост форме в вары вместо результатов из строки $.
$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($_POST['skills']) . " is available in " . htmlspecialchars($_POST['city']);
}
}
В чем проблема? Я не понимаю название: это то, что вы хотите или что происходит сейчас !? – Jeff
'if ($ sql)'? Получение нулевых строк из MySQL не удалит код SQL из вашей переменной PHP. –
Что это условие должно проверять, 'if ($ sql)'? –