2014-02-14 3 views
-3

У меня есть следующие высказывания:PHP Дополнительные если заявления блокировать сначала одну

if (isset($_POST['name'])) { 
    $name = $_POST['name']; 
    $sql = "SELECT * FROM patients WHERE name LIKE '{$name}' "; 
} elseif (isset($_POST['surname'])) { 
    $surname = $_POST['surname']; 
    $sql = "SELECT * FROM patients WHERE surname LIKE '{$surname}' "; 
} elseif (isset($_POST['pesel'])) { 
    $pesel = $_POST['pesel']; 
    $sql = "SELECT * FROM patients WHERE pesel LIKE '{$pesel}' "; 
} 

И у меня есть 3 формы поиска. Но работает только первый (имя). Другие не отвечают. Как его изменить?

+1

Кстати, вам нужно искать новую вещь - инъекции SQL. – Endijs

+2

изучить основную логику программирования. если/elseif/elseif/... цепи перестают оцениваться, когда выполняется первое «успешное» совпадение. –

+0

что вы пытаетесь сделать? это сложный поиск нескольких полей? –

ответ

2

Проверьте, не установлены ли все переменные $ _POST [] одновременно. Поскольку $ _POST ['name'] является первой переменной, и если она установлена, другие условия не будут проверяться.

+0

они не установлены – user3253748

+0

'print_r ($ _ POST);' –

-2

попробовать это:

if(isset($_POST['name'])||isset($_POST['surname'])||isset($_POST['pesel'])) { 
    $name = $_POST['name']; 
    $sql = "SELECT * FROM patients WHERE name LIKE '{$name}' or surname LIKE '{$surname}' or pesel LIKE '{$pesel}'"; 
} 
1
try this.... 
if(isset($_POST['name'])) { 
$name = $_POST['name']; 
echo $name; 
$sql = "SELECT * FROM patients WHERE name LIKE '{$name}' "; 
} 
else if(isset($_POST['surname'])) { 
$surname = $_POST['surname']; 
echo $surname; 
$sql = "SELECT * FROM patients WHERE surname LIKE '{$surname}' "; 
} 
else if(isset($_POST['pesel'])) { 
$pesel = $_POST['pesel']; 
echo $pesel; 
$sql = "SELECT * FROM patients WHERE pesel LIKE '{$pesel}' "; 
} 
0

Вы можете использовать несколько, как условия в одном запросе

$sql = "SELECT * FROM patients WHERE name LIKE '{$name}' OR LIKE '{$surname}' OR LIKE '{$pesel}' "; 
+0

Очень хорошая идея, thx. Сохранено много написания кода – user3253748

+0

@ user3253748 PLS принять в качестве ответа и проголосовать –

2

Браузер будет посылать на поле ввода в запросе, даже если это пустой ,

Вы не можете проверить, пуста ли строка с isset. Вам также нужно !== "".

+0

O.K. теперь я понимаю логику. Thx все за все ответы – user3253748

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