2012-06-12 8 views
2

Это, кажется, простой вопрос, но я не могу на всю жизнь найти ответ. Как выбрать все строки в столбце независимо от значения? Например, если я хочу, чтобы все в месте колонки:Как выбрать все строки в столбце MySQL

"SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='I don't care, return everything'" 

Имейте в виду, что мне нужно местоположение там, потому что я получаю динамический URL запроса к этой базе данных, в противном случае я бы просто оставил его.

Редактировать Я прочитал некоторые ответы и стыда на меня, чтобы не делать себе яснее. Я пытаюсь увидеть, если запрос MySQL, где вы можете выбрать каждую строку в столбце можно без необходимости для этого:

if ($location == '') { 
    "SELECT * FROM whateverTable WHERE id='$id' AND date='$date'" 
} else { 
    "SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='$location'" 
} 

Вместо взлом моего кода так (потому что я чертовски много больше запросов положения в моем реальном коде), я пытаюсь увидеть, если что-то подобное можно:

"SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='%'" 

или это:

"SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location='.*'" 

Но я не имею никакой удачи. Если это не так, я просто перейду. Извините, что не сделал себя яснее

+0

где положение не должен ссылаться на каждый столбец. – DGH

+1

Вы должны, вероятно, избегать этого маршрута вместе и добавить другой метод для извлечения данных. – JustinDanielson

ответ

2

Как вы сказали в своем вопросе, вы должны построить запрос динамически и просто опустить это поле. Запрос стали бы тогда:

SELECT * FROM whateverTable 
WHERE id = '$id' 
AND date = '$date' 

Если вы не можете сделать это по какой-то причине, вы могли бы попробовать что-то вроде этого:

SELECT * FROM whateverTable 
WHERE id = '$id' 
AND date = '$date' 
AND (location='$location' OR '$location' = '') 

Установка $location в пустую строку заставит все места быть вернулся.

И не забывайте правильно избегать строк, чтобы избежать атак SQL-инъекций.

+0

Логически, хотя установка местоположения в '' вернет каждую строку, но по какой-то причине она не возвращает ни одной строки. –

+1

@JohnBowlinger: вам нужно добавить 'OR '$ location' = '''. Без этой части он будет соответствовать только строкам, где местоположение - это пустая строка, которая не является тем, что вы хотите. –

+0

Спасибо!Работает как шарм !!! –

1

SELECT location FROM whateverTable вернет вам каждую строку/значение в столбце местоположения.

Добавьте предложение where, если вы хотите начать фильтрацию результатов.

+0

для целей отладки. Я использую 'mysqli_fetsh_array (mysqli_query ('SELECT location FROM anyTable'))', тогда я показываю все результаты, используя foreach, но это дает мне самую первую запись в столбце! – Amine

0

Если вы динамически строите запрос, просто проверьте, не является ли местоположение нулевой или пустой строкой, а затем опустите эту часть запроса.

0

Заменить равный символ: «=» по LIKE

SELECT * FROM whateverTable WHERE id='$id' AND date='$date' AND location LIKE '%' 
Смежные вопросы