Для каждого результата в запросе MySQL нажмите на массив (сложный) - PullRequest
0 голосов
/ 15 июня 2010

Хорошо, вот что я пытаюсь сделать.Я выполняю запрос MySQL для самых последних сообщений.Для каждой из возвращенных строк мне нужно отправить идентификатор строки в массив, а затем в этот идентификатор в массиве мне нужно добавить больше данных из строк.Многомерный массив.

Вот мой код.

$query = "SELECT * FROM posts ORDER BY id DESC LIMIT 10"; 
$result = mysql_query($query);

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

            $id = $row["id"];
            $post_title = $row["title"];
            $post_text = $row["text"];
            $post_tags = $row["tags"];
            $post_category = $row["category"];
            $post_date = $row["date"];



}

Как вы можете видеть, я еще ничего не сделал с массивами.Вот идеальная структура, которую я ищу, только если вы запутались.

Основной массив, я думаю, вы могли бы назвать его.Мы просто назовем этот массив $ posts.В этом массиве у меня есть один массив для каждой строки, возвращаемой в моем запросе MySQL.В этих массивах есть $ post_title, $ post_text и т. Д.

Как мне это сделать?Я так растерялся ... пример был бы очень признателен.

-Дилан

Ответы [ 3 ]

1 голос
/ 15 июня 2010
    $master[$id]['post_title'] = $post_title;
    $master[$id]['post_text'] = $post_text;
    // etc

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

    $master[$row["id"]]['post_title'] = $row["title"];
    $master[$row["id"]]['post_text'] = $row["text"];
    // etc

Изменить в ответ на комментарий:

foreach( $master as $row )
{
    echo $row['post_title'];
}

// or if you know the id

echo $row[$id]['post_title'];
1 голос
/ 15 июня 2010

Мне нравится:

$posts = array();
while ($row = mysql_fetch_array($result)) {
    $posts[] = array(
         'id' => $row['id'],
         'title' => $row['title'],
         'text' => $row['text']
    );
}
1 голос
/ 15 июня 2010

здесь у вас есть полный справочник по массивам, в любом случае, обычный способ сделать это - использовать $myarray[] = $aa;, чтобы «протолкнуть» его.

    <?php
    $query = "SELECT * FROM posts ORDER BY id DESC LIMIT 10"; 
    $result = mysql_query($query);
    $posts = array();
    while($row = mysql_fetch_array($result)){
           $posts[] = $row;
          // second option, index the post by their id
          // $posts[$row["id"]] = $row;
          // third option
          /*
            $tmp = array();
            $tmp["title"] = $row["title"];
            $tmp["desc"] = $row["desc"];
            $posts[$row["id"]] = $tmp;
          */

    }
    ?>
...