2014-07-02 2 views
0

Мне нужна помощь со сценарием, который ищет 8 разных полей в одной таблице, но также хотел бы получить результат, если один или три параметра не искажены. Я использую PHP и MySql, и я пробовал свой путь с этим в течение очень долгого времени, и теперь я обращаюсь к вам экспертами здесь. Я использую как прямоугольники, так и ящики. Не могли бы вы помочь мне в этом.Нужна помощь в поиске моего sql

Select * FROM mymembers WHERE 
country = $country AND 
gender = $gender AND 
haircolor = $haircolor AND 
hairlength = $hairlength AND 

Проблема возникает, когда один из них не имеет результата ..... ????? Пожалуйста, помогите Carsten

+0

Вручную проверьте, какие ** выберите ** или **, установите флажок **, затем используйте переменную для добавления условий с предложением 'WHERE' – Ranjith

+0

. Этот вопрос кажется не по теме, поскольку ему не хватает базового уровня исследований , – Strawberry

ответ

0

Создайте свой SQL с помощью PHP. Проверьте, не являются ли переменные пустыми, а затем добавьте их.

E.g.

$sql = 'Select * FROM mymembers WHERE '; 
if (!empty($country)) $sql .= 'country = '.$country; 

Обязательно избегайте любых переменных, которые вы используете в SQL, чтобы предотвратить инъекции.

+0

Возможно ли использовать этот подход при использовании массивов? – Carsten

0

Вы упомянули: хотите, чтобы также дать результат, если один или три параметра не searced для

В этом случае вам необходимо использовать условный оператор OR.

Код:

$query = "SELECT * FROM mymembers WHERE 
country = '" . $country . "' OR 
gender = '" . $gender . "' OR 
haircolor = '" . $haircolor . "' OR 
hairlength = '" . $hairlength . "'"; 

На мой взгляд, лучший способ запросить эту таблицу, чтобы использовать «флажки», «радио-кнопки» и «выберите выпадающий список» для уточнения поиска, потому что «наиболее вероятно «значения country, gender, haircolor и hairlength предопределены, и они, вероятно, не изменятся. Если это «поле поиска», то вы можете положиться на оператора LIKE, но в вашем случае результаты будут ужасными.

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