php mysql с дополнительным параметром

Мне нужна помощь с предоставлением дополнительных параметров для функции 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") {} 

когда вы не передадите значение для значений по умолчанию по умолчанию.