Я использую 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, я не делаю другого запроса)!
Спасибо всем, ребята...
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`
Кажется сомнительным, что вы либо не можете выполнить другой запрос, либо использовать фильтр в запросе в первую очередь; это заставляет меня думать, что ваш дизайн нужно немного пересмотреть.
В любом случае значение, которое вы передаете на mysql_fetch_array
, является идентификатором ресурса; он указывает на ресурс, который представляет результат исходного запроса, но на самом деле это не выход исходного запроса. Если это действительно единственный запрос, который вы можете запустить, и вы действительно хотите иметь только результаты, содержащие значение $adtypes
, тогда вам нужно будет отфильтровать их из исходных результатов запроса (в пределах цикл на mysql_fetch_array
). Вы не можете изменить ресурс, на который указывает $query_results
.