PHP MySQL — просматривайте результаты mysql_query и сортируйте их по отдельным массивам

Я побежал mysql_query и запросил таблицу, которую я выбрал, затем использовал mysql_fetch_assoc поместить результаты в массив. Затем я попытался перебрать этот массив и, в основном, я запустил if заявление о том, что если сообщение имеет определенный идентификатор категории, я хочу, чтобы оно переместилось в другой массив, но оно просто не работает. Вот что у меня сейчас есть:

$getPostType = "SELECT * FROM myTable";

$queryPostType = mysql_query($getPostType) or die("Could Not Connect: ".mysql_error());
$postTypeArray = mysql_fetch_assoc($queryPostType);

$queryPostType1 = array();

foreach ($postTypeArray as $key => $value) {
echo $key;
echo $value;
if($postTypeArray['category']===7){
echo $key;
echo $value;
$queryPostType1[]=$postTypeArray[$value];
//array_push($queryPostType1, $postTypeArray);
}
}

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

до сих пор, как я делаю, и это работает:

<?php $queryPostType = mysql_query($getPostType) or die("Could Not Connect: ".mysql_error()); ?>
<?php $postTypeArray = mysql_fetch_assoc($queryPostType); ?>
<?php do{ ?>
<?php if($postTypeArray['category'] == 7){ ?>
<article>
<h3><strong><?php echo $postTypeArray['title']; ?></strong></h3>
<div><?php echo $postTypeArray['html']; ?></div>
</article>
<?php } ?>
<?php }while($postTypeArray = mysql_fetch_assoc($queryPostType)) ?>

Где «категория» — это идентификатор категории, «заголовок» — это заголовок сообщения, а «html» — фактическое содержание сообщения.

Но единственная проблема в том, что я делаю это снова и снова и делаю запрос для каждого идентификатора категории. В некоторых местах я делаю целых 12 запросов, но я хотел бы сделать только один запрос, закрыть свое соединение, пройтись по данным, поместить их в отдельные массивы и распределить дату оттуда.

Еще раз спасибо за любую помощь.

-1

Решение

Изменить от этого:

    if($postTypeArray['category']===7){
echo $key;
echo $value;
$queryPostType1[]=$postTypeArray[$value];
//array_push($queryPostType1, $postTypeArray);
}

к этому:

    if($value['category']===7){
echo $key;
echo $value;
$queryPostType1[]=$value;
//array_push($queryPostType1, $postTypeArray);
}

В качестве альтернативы, вы можете использовать $postTypeArray[$key] взаимозаменяемо с $valueДо тех пор, пока вы находитесь в цикле foreach

0

Другие решения

Вам нужно запустить цикл while для поиска следующей записи, как показано ниже.

$getPostType = "SELECT * FROM myTable";
$queryPostType = mysql_query($getPostType) or die("Could Not Connect: ".mysql_error());
$queryPostType1 = array();
while($postTypeArray = mysql_fetch_assoc($queryPostType)){
echo $key;
echo $value;
if($postTypeArray['category']===7){
echo $key;
echo $value;
$queryPostType1[]=$postTypeArray[$value];
}
}

проверьте этот URL для справки:http://www.w3schools.com/php/php_mysql_select.asp

0

Попробуй это :

  • объявить массив
  • добавить значение в массив с $queryPostType1[$key]= $value;

код

$queryPostType1 = array(); //declare the array

$getPostType = "SELECT * FROM myTable";

$queryPostType = mysql_query($getPostType) or die("Could Not Connect: ".mysql_error());
$postTypeArray = mysql_fetch_assoc($queryPostType);

$queryPostType1 = array();

foreach ($postTypeArray as $key => $value) {
echo $key;
echo $value;
if($postTypeArray['category']===7){
echo $key;
echo $value;
$queryPostType1[$key]= $value; //add value to the array
//array_push($queryPostType1, $postTypeArray);
}
}
0