MYSQL, как получить строки со значением поля 'x' в этом случае? - PullRequest
0 голосов
/ 29 ноября 2009

Я использую PHP для запроса базы данных mysql.

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

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

Объяснение: ($ 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) содержит только ту информацию, которую я хочу, БЕЗ другого запроса?

Спасибо

Если вам нужно больше информации, скажите мне, и я обновлю этот вопрос.

UPDATE

У меня не может быть другого запроса, потому что мои запросы очень большие, и они ДЕЙСТВИТЕЛЬНО влияют на производительность.

Я думаю, что foreach это то, что я после ...

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

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

В любом случае, спасибо, ребята ...

Ответы [ 2 ]

1 голос
/ 29 ноября 2009

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

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

1 голос
/ 29 ноября 2009
SELECT * FROM table WHERE field = 'Private'

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

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

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

  SELECT `adtype`, COUNT(*) as `nr_of_ads`
    FROM `ads`
GROUP BY `adtype`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...