Мне нужна помощь с предоставлением дополнительных параметров для функции php, которые будут искать в базе данных MySQL соответствующие критерии.
Сценарий: Front-end = Будет поле ввода 6 html, имя которого называется authorName, authorCountry, authorState и т. Д.
Когда пользователь заполняет эти поля, значения полей будут переданы в качестве параметров mysql для поиска db. Здесь проблема в том, что если пользователь хочет узнать список авторов в США, он войдет в США в поле страны и покинет другие поля. Но это нарушит mysql-запрос, поскольку остальные поля остаются пустыми.
я пытался сделать, но это работает для меня.
function getAuth(authName=NULL, authCoun=NULL, authSate=NULL) { $query = mysql_query("SELECT * FROM authTable WHERE authName='authName' AND authCoun='authCoun' AND authSate='authSate'"); return $query; }
Пожалуйста, помогите мне передать необязательный параметр.
Спасибо..
function getAuth($authName=NULL, $authCoun=NULL, $authSate=NULL) { $sql = "SELECT * FROM authTable WHERE 1 = 1"; if ($authName) { $sql .= " AND authName='$authName'"; } if ($authCoun) { $sql .= " AND authCoun='$authCoun'"; } if ($authSate) { $sql .= " AND authSate='$authSate'"; } return mysql_query($sql); }
И убедитесь, что вы переместили эту переменную, прежде чем перейти к функции.
Сделайте это так:
SELECT * FROM authTable WHERE 1 = 1 AND (@authName IS NULL OR authName = @authNameParam) AND (@authCoun IS NULL OR authCoun = @authCounParam) AND (@authSate IS NULL OR authSate = @authSateParam) ...
Этот запрос не будет прерываться, даже если никакие параметры вообще не переданы этому запросу, т. SELECT * FROM authtable
все с NULL
значением. В этом случае все WHERE
станет WHERE 1 = 1
которое будет действовать как SELECT * FROM authtable
как если бы не было WHERE
пункт.
функция должна быть такой
function getAuth(authName=NULL, authCoun="Default value", authSate="Default value") {}
когда вы не передадите значение для значений по умолчанию по умолчанию.