За последние 24 часа нас посетили 18843 программиста и 1686 роботов. Сейчас ищут 835 программистов ...

Непонятки с mysql_fecth_array

Тема в разделе "MySQL", создана пользователем warlock9000, 22 янв 2010.

  1. warlock9000

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

    С нами с:
    22 янв 2010
    Сообщения:
    3
    Симпатии:
    0
    Здравствуйте! Имеется тестовый сервак с PHP 5.2.11, Apache 2.2.13, MySql 5.4. Имеется след.код:
    $user = "nlena";
    $pass = "yktyf";
    $host = "testdb";
    $db = "deti";
    $sobes1 = "SELECT * FROM sobes where chnum = 1";
    $n1 = "SELECT * FROM nastr";

    //переменные программы

    $cOne = 0; //Счетчик людей пол-их на 1 ребенка
    $sOne = 0.00;//Сумма по людям пол-их на 1 ребенка
    $clOne = 0;//Счетчик людей пол-их на 1 ребенка - прошлое время
    $slOne = 0; //Сумма по людям пол-их на 1 ребенка - прошлое время

    $cTwo = 0; //аналогично вышеописанному
    $sTwo = 0;
    $clTwo = 0;
    $slTwo = 0;

    $reesCount = 0; //счетчик людей наст.время
    $reesItog = 0; //сумма итого наст.время
    $reesLCount = 0; //счетчик людей наст.время
    $reesLItog = 0; //сумма итого наст.время

    $mydate = mysql_pconnect($host, $user, $pass);
    $dtb = mysql_select_db($db, $mydate);

    //работаем с запросами

    @mysql_query("SET NAMES 'cp1251'");

    $n2 = mysql_query($n1, $mydate);
    $nastr = mysql_fetch_array($n2);
    $r = mysql_query($sobes1, $mydate) or die( "<br><br><b>MySQL Error:</b> " . mysql_errno() . " // " . mysql_error() . "<br><br>" );

    while(false !== ($row = mysql_fetch_array($r)))
    {
    if ($r['chnum'] == 1)
    {
    $cOne = $cOne + 1;
    $sOne = $sOne + $row['sum'];
    if ($row['sum'] > $nastr['first'])
    {
    $clOne = $clOne + 1;
    $slOne = $slOne + ($row['sum'] - $nastr['first']);
    }
    }
    else
    {
    $cTwo = $cTwo + 1;
    }
    }
    ?>

    Вывожу данные:

    <?php
    printf(var_dump(mysql_result($r, 0, "chnum"))); //выдает - string(1) "1"
    printf(var_dump($row['chnum'])); //выдает - NULL, т.е. данных вообще нет!
    ?>
    В общем, происходит затык при передаче в mysql_fetch_array(assoc, row - все перепробовал). В чем может быть проблема, не подскажете?
     
  2. SDR

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

    С нами с:
    22 сен 2009
    Сообщения:
    244
    Симпатии:
    0
    $row['chnum'] после цикла смотришь? ;-)
     
  3. warlock9000

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

    С нами с:
    22 янв 2010
    Сообщения:
    3
    Симпатии:
    0
    Хотите сказать после цикла переменная обнуляется? Вряд ли, сейчас вывел внутри цикла, так же NULL выводит.
     
  4. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    print_r($row) внутри цикла что выводит?

    $r - это ресурс, а не массив.
     
  5. warlock9000

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

    С нами с:
    22 янв 2010
    Сообщения:
    3
    Симпатии:
    0
    Да, вы правы, это ресурс, просто я все уже варианты начал перебирать. А print_r($row) внутри цикла выводит все данные выборки!

    З.Ы. Решил показать, что выводит - Array ( [0] => Иванова [1] => Иванна [2] => Ивановна [3] => адрес [4] => 14 [5] => номер [6] => серия [7] => Иванов [8] => Иван [9] => Иванович [10] => 2008-10-16 [11] => II-АР [12] => номер [13] => 1 [14] => 2010-01-01 [15] => 2010-01-31 [16] => данные [17] => 0 [18] => 1.15 [19] => 1 [20] => 1 )

    Сейчас попробовал вместо имен столбцов ставить номера ([1] и т.д.) и все заработало! Т.е. получилось, что mysql_fetch_array вместо имен столбцов из набора записей $r подставляет просто цифры! Почему так, не скажете?
     
  6. SDR

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

    С нами с:
    22 сен 2009
    Сообщения:
    244
    Симпатии:
    0
    вообще не лишним предварительно читать мануал

    варианты, нужные тебе: mysql_fetch_array($r, MYSQL_ASSOC) или mysql_fetch_assoc($r)