За последние 24 часа нас посетил 15861 программист и 1554 робота. Сейчас ищут 869 программистов ...

Проблема с массивом

Тема в разделе "PHP и базы данных", создана пользователем harek13, 24 фев 2011.

  1. harek13

    harek13 Активный пользователь

    С нами с:
    4 ноя 2010
    Сообщения:
    26
    Симпатии:
    0
    Доброе время суток. сразу к сути проблемы:

    вот есть таблица:
    Код (Text):
    1.  
    2. CREATE TABLE IF NOT EXISTS `img_tmp` (
    3.   `id_img` int(11) NOT NULL AUTO_INCREMENT,
    4.   `id_desk` varchar(255) NOT NULL,
    5.   `title` varchar(255) NOT NULL,
    6.   `mini` varchar(255) NOT NULL,
    7.   `publication` varchar(255) NOT NULL,
    8.   PRIMARY KEY (`id_img`)
    9. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
    10.  
    11. --
    12. -- Дамп данных таблицы `img_tmp`
    13. --
    14.  
    15. INSERT INTO `img_tmp` (`id_img`, `id_desk`, `title`, `mini`, `publication`) VALUES
    16. (1, '1298366093_846029 ', '1298527448_146739.jpeg', 'mini_1298527448_146739.jpeg', '1298527448'),
    17. (2, '1298366093_846029 ', '1298528749_414195.jpeg', 'mini_1298528749_414195.jpeg', '1298528749'),
    18. (3, '1298366093_846029 ', '1298539388_216182.jpeg', 'mini_1298539388_216182.jpeg', '1298539388');
    есть такой к ней запрос:

    Код (Text):
    1. $tmp_img = mysql_query("SELECT title FROM img_tmp WHERE id_desk = '$desk'");
    2.  
    3. $array_tmp_img = mysql_fetch_array($tmp_img);
    на
    Код (Text):
    1. print_r ($array_tmp_img);
    выходит следующий результат:
    Код (Text):
    1.  Array ( [0] => 1298527448_146739.jpeg [title] => 1298527448_146739.jpeg )
    а должен выходить результат с тремя записями. откуда этот 'title' мог попасть туда?

    помогите кто сможет пожалуйста. я уже не знаю в чем проблема. заранее при многом благодарен.
     
  2. harek13

    harek13 Активный пользователь

    С нами с:
    4 ноя 2010
    Сообщения:
    26
    Симпатии:
    0
    при чем самое интересное что в phpmyadmin'е запрос проходит на ура.
     
  3. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    всё верно. на каждое поле mysql_fetch_XXXX() возвращает 2 результата - один с числовым ключем, второй с именованным. а что?
     
  4. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    на каждое поле mysql_fetch_array() возвращает 2 результата
    mysql_fetch_assoc и mysql_fetch_row вернут по одному на поле.

    Вообще-то и mysql_fetch_array() может вернуть по одному результату на поле. =))
     
  5. harek13

    harek13 Активный пользователь

    С нами с:
    4 ноя 2010
    Сообщения:
    26
    Симпатии:
    0
    так ка бы это понятно. но как получить все записи относящиеся к 'id_desk'? я понимаю что возвращается 2 результата. но выводится то только 1. или я в чем то ошибаюсь? аналогичный запрос к другой таблице выводит все как нужно - все записи без дубля. тут какой глюк - мне так кажется. но в чем пока не могу разобраться.
     
  6. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Что запросили, то и вывел.
     
  7. harek13

    harek13 Активный пользователь

    С нами с:
    4 ноя 2010
    Сообщения:
    26
    Симпатии:
    0
    так я понял. но он вывел только 1 запись понимаете? а их в таблице три. вот и вопрос - хде еще 2))
     
  8. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    [Выделено мной]

    Сравните:
    PHP:
    1. <?php
    2. $tmp_img = mysql_query("SELECT title FROM img_tmp WHERE id_desk = '$desk'");
    3.  
    4. $array_tmp_img = mysql_fetch_array($tmp_img);
    5.  
    и

    PHP:
    1. <?php
    2. $result = mysql_query("SELECT id, name FROM mytable");
    3.  
    4. while ($row = mysql_fetch_array($result)) {
    5.     printf("ID: %s  Name: %s", $row["id"], $row["name"]);
    6. }
    7.  
     
  9. harek13

    harek13 Активный пользователь

    С нами с:
    4 ноя 2010
    Сообщения:
    26
    Симпатии:
    0
    сравнил. здесь идет вывод в вашем примере строк массива. а у меня просто распечатка массива. или я чего-то не понимаю?
     
  10. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    //удалено за невнимательностью
     
  11. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Переформулирую второй пример:
    PHP:
    1. <?php
    2.  $result = mysql_query("SELECT id, name FROM mytable");
    3.  
    4.  $row = mysql_fetch_array($result)
    5.  while ($row) {
    6.      $fullTable[]=$row;
    7.      $row = mysql_fetch_array($result)
    8.  }
     
  12. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Эх... Уже сказали... =((

    Короче, ключевое слово - цикл.
     
  13. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    А я испугался, что ерунду написал спросони и удалил =) В жизни так бывает)))
     
  14. harek13

    harek13 Активный пользователь

    С нами с:
    4 ноя 2010
    Сообщения:
    26
    Симпатии:
    0
    спасибо большое. выручили.