У меня возникла проблема с получением запроса на работу (а также с вопросом о безопасности запроса).Создание условного sql-запроса
if(isset($_POST)){
$sql = "SELECT * FROM members WHERE";
if($_POST['FirstName_S'] !== ''){
$sql .= " FirstName LIKE '%" . $_POST['FirstName_S'] . "%'";
}
if($_POST['LastName_S'] !== ''){
$sql .= " OR LastName LIKE '%" . $_POST['LastName_S'] . "%'";
}
if($_POST['Firm_S'] !== ''){
$sql .= " OR Firm LIKE '%" . $_POST['Firm_S'] . "%'";
}
if($_POST['Country_S'] !== ''){
$sql .= " OR Country LIKE '%" . $_POST['Country_S'] . "%'";
}
if($_POST['City_S'] !== ''){
$sql .= " OR City LIKE '%" . $_POST['City_S'] . "%'";
}
if($_POST['State_S'] !== '' AND $_POST['State_S'] !== 'other'){
$sql .= " OR State LIKE '%" . $_POST['State_S'] . "%'";
}
}
Очевидно, что если FirstName_S не определен, изломы запроса слова "ГДЕ ИЛИ". Похоже, у него будет логическое решение, но я слишком долго смотрел на него.
Кроме того, инсталляция sql была поднята в качестве проблемы, а в качестве побочного вопроса было бы достаточно дезинфицировать входные данные? Или это вообще плохая практика?
ли FirstName_S' требуется 'для отправки в' Post'? – EmCo
нет, это не так. Это просто функция поиска, в которой пользователи могут искать членов в базе данных. Вы можете просто ввести любой из них один или другие. – aceslowman
Чтобы защитить от SQL-инъекций, лучше всего подготовить подготовленные операторы: http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php/60496#60496 –