mysql_result или mysql_fetch_array. Помогите выбрать.

Тема в разделе "Как сделать...", создана пользователем pavlin, 4 авг 2012.

  1. pavlin

    pavlin Писатель

    Регистр.:
    28 ноя 2011
    Сообщения:
    3
    Симпатии:
    2
    хочу понять что лучше.

    Какой код из нижеприведенных считается более правильным?
    Какой код при больших количествах записей в БД буте работать быстрее и надежнее?
    Почему, по вашему мнению, лучше использовать тот или иной метод?

    к примеру имеется БД `name`:
    id | name
    1 | Александр
    2 | Павел
    3 | Григорий
    4 | Виктор
    ...|...

    Способ вывода данных из БД №1
    PHP:
        mysql_connect("localhost""mysql_user""mysql_password") or
            die(
    "Could not connect: " mysql_error());
        
    mysql_select_db("mydb");
     
        
    $result mysql_query("SELECT id, name FROM `name` ;");
        
    $num=mysql_num_rows($result);
        
    $array=mysql_fetch_array($result)
        for (
    $i=0;$i<$num;$i++)
        {
            echo 
    $array["id"][$i]." - ".$array["name"][$i]."<br>";
        }
    Способ вывода данных из БД №2
    PHP:
    mysql_connect("localhost""mysql_user""mysql_password") or
            die(
    "Could not connect: " mysql_error());
        
    mysql_select_db("mydb");
     
        
    $result mysql_query("SELECT id, name FROM `name` ;");
        
    $num=mysql_num_rows($result);
        for (
    $i=0;$i<$num;$i++)
        {
            
    $id=mysql_result($result,$i,"id");
            
    $name=mysql_result($result,$i,"name");
            echo 
    $array["id"][$i]." - ".$array["name"][$i]."<br>";
        }
     
  2. pavlin

    pavlin Писатель

    Регистр.:
    28 ноя 2011
    Сообщения:
    3
    Симпатии:
    2
    Прошу прощения за ошибку в способе №2
    не
    PHP:
    echo $array["id"][$i]." - ".$array["name"][$i]."<br>";
    а
    PHP:
    echo $id." - ".$name."<br>";
     
  3. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    Первый вариант написан не правильно и работать не будет. А вообще вариант с mysql_fetch_array работать будет примерно в 20-25 раз быстрее. И почитай что такое Перейти по ссылке.
     
    pavlin нравится это.
  4. cruide

    cruide Писатель

    Регистр.:
    25 июл 2012
    Сообщения:
    8
    Симпатии:
    22
    Думаю, что правильней вот так:

    PHP:
    mysql_connect("localhost""mysql_user""mysql_password") or die("Could not connect: " mysql_error());
    mysql_select_db("mydb");
     
    $result mysql_query("SELECT * FROM `name`");
    $rows  mysql_num_rows($result);
     
    if( !empty(
    $rows) ) {
        for(
    $i=0$i<$rows$i++) {
            
    $line mysql_fetch_assoc($result);
            echo 
    "{$line['id']} - {$line['name']}<br />";
        }
    }
     
  5. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    ну во-первых быстрее будет работать mysqli_result, а ещё лучше
    PHP:
    $db = new PDO($connect_str,DB_USER,DB_PASS);
    $result $db->query("SELECT * FROM `testing` LIMIT 2");
    while(
    $row $result->fetch())
        {
            
    // в результате получаем ассоциативный массив
            
    print_r($row);
        }
    А вообще стольк большие базы данных надо прежде всего правильно оптимизировать
     
  6. cruide

    cruide Писатель

    Регистр.:
    25 июл 2012
    Сообщения:
    8
    Симпатии:
    22
    Про использование PDO... не всегда прокатывает... много раз сталкивался с ситуацией, когда на сервере нет PDO... даже написал эмулятор для совместимости в своих приложениях.
    И соственно mysqli_result человек в примере не указал... mysqli это всё же иное средство работы с MySQL чем просто интерфейс mysql .
    а вот разница в скорости работы между mysql_result и mysql_fetch_assoc не занчительна, зато вторая более удобна.
    Конечно у каждого свое мнение на счет этого... но мое всё такое.
     
    Extalionez нравится это.