2016-06-23 4 views
0

Этот вопрос, кажется, был задан много раз, но ни один из ответов не работал на меня. Не считая числа или строк, ничего.

Я написал следующую функцию запроса для доступа к форме, в которой пользователь выбирает навык из выпадающего списка и должен ввести город. Результаты отображаются правильно, когда есть совпадение навыков и города. Вот код:

Как отобразить результаты 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']); 
    } 
} 
+0

В чем проблема? Я не понимаю название: это то, что вы хотите или что происходит сейчас !? – Jeff

+3

'if ($ sql)'? Получение нулевых строк из MySQL не удалит код SQL из вашей переменной PHP. –

+0

Что это условие должно проверять, 'if ($ sql)'? –

ответ

2

Есть слишком много неправильных ответов вокруг, так что стоит написать правильный один.

$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']); 
    } 
} 
+1

Безупречный. Я удалил свой ответ, чтобы сделать ваш взгляд более заметным :) –

Смежные вопросы