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

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
не
PHP:
echo $array["id"][$i]." - ".$array["name"][$i]."<br>";
а
PHP:
echo $id." - ".$name."<br>";
 
Первый вариант написан не правильно и работать не будет. А вообще вариант с mysql_fetch_array работать будет примерно в 20-25 раз быстрее. И почитай что такое Для просмотра ссылки Войди или Зарегистрируйся.
 
Думаю, что правильней вот так:

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
ну во-первых быстрее будет работать 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);
    }
А вообще стольк большие базы данных надо прежде всего правильно оптимизировать
 
Про использование PDO... не всегда прокатывает... много раз сталкивался с ситуацией, когда на сервере нет PDO... даже написал эмулятор для совместимости в своих приложениях.
И соственно mysqli_result человек в примере не указал... mysqli это всё же иное средство работы с MySQL чем просто интерфейс mysql .
а вот разница в скорости работы между mysql_result и mysql_fetch_assoc не занчительна, зато вторая более удобна.
Конечно у каждого свое мнение на счет этого... но мое всё такое.
 
Назад
Сверху