MYSQL, как получить строки со значением поля 'x' в этом случае?

0

Я использую PHP для запроса mysql db.

После запроса я использую mysql_fetch_array в цикле while для отображения всех результатов внутри таблицы.

Теперь, в зависимости от переменной ($ adtypes), я хочу изменить массив query-results...

Объяснение: ($ query_results - это имя массива, содержащего результаты запроса, в основном что-то вроде SELECT * FROM table, поэтому он выбирает все!

$adtypes = $_GET['adtypes'];
//$adtypes is irrelevant to query, the query is already done before all this.
switch ($adtypes){
case "Private":
$query_results = //Here I want the array to only contain values where the mysql row field = 'Private'
    break;
    case "company":
    $query_results = // Same thing as above, but only company ads
    break;
    }

Затем я делаю цикл через массив, чтобы отображать такие результаты:

while($row = mysql_fetch_array($query_results)){

Как я могу убедиться, что массив (query_results) содержит только информацию, которую я хочу БЕЗ выполнения другого запроса?

Спасибо

Если вам нужно больше ввода, скажите мне, и я обновлю это Q.

UPDATE

У меня не может быть другого запроса, потому что мои запросы очень большие, и они влияют на производительность отрицательным образом.

Я думаю, что foreach - это то, что я хочу...

Кроме того, причина, по которой я не могу манипулировать текущим запросом, заключается в том, что я показываю nr личных объявлений и объявлений объявлений на моем сайте, и вся эта информация поступает из запроса.

Итак, если я запрашиваю свой db, где я ищу только частные объявления, то я не могу показать, сколько объявлений в этой компании там (IF, я не делаю другого запроса)!

Спасибо всем, ребята...

  • 0
    Давайте примем это как данность, что вы не можете сделать еще один запрос (не стесняйтесь объяснять это ;-)). Можете ли вы хотя бы изменить цикл while на цикл foreach? Или этот оператор switch является единственным местом, где вы можете (или хотите) вносить изменения?
  • 0
    Прочитайте мое обновление .....!
Показать ещё 1 комментарий
Теги:

2 ответа

1
Лучший ответ
SELECT * FROM table WHERE field = 'Private'

не нужно использовать php для этого. но если вам действительно нужно, вы можете использовать array_filter:

$query_result = array_filter($query_result, create_function('$var', 'return $var['field'] != \'Private\''));

изменить:, как указано в комментариях, чтобы получить количество частных и корпоративных объявлений, используйте mysqls COUNT:

  SELECT `adtype`, COUNT(*) as `nr_of_ads`
    FROM `ads`
GROUP BY `adtype`
  • 0
    Как я уже сказал, запрос уже сделан, я не могу получить 2 запроса или выполнить такой запрос в моем случае!
  • 0
    почему вы не можете сделать еще один запрос?
Показать ещё 8 комментариев
1

Кажется сомнительным, что вы либо не можете выполнить другой запрос, либо использовать фильтр в запросе в первую очередь; это заставляет меня думать, что ваш дизайн нужно немного пересмотреть.

В любом случае значение, которое вы передаете на mysql_fetch_array, является идентификатором ресурса; он указывает на ресурс, который представляет результат исходного запроса, но на самом деле это не выход исходного запроса. Если это действительно единственный запрос, который вы можете запустить, и вы действительно хотите иметь только результаты, содержащие значение $adtypes, тогда вам нужно будет отфильтровать их из исходных результатов запроса (в пределах цикл на mysql_fetch_array). Вы не можете изменить ресурс, на который указывает $query_results.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню