Подтвердить что ты не робот

Разница между mysql_fetch_array и mysql_fetch_row?

Это простой вопрос для пользователей PHP. Причина, по которой я не смог получить точную разницу между mysql_fetch_array() и mysql_fetch_row() в PHP, заключается в том, что я много работал с Java.


Прежде чем опубликовать этот вопрос здесь, я получил несколько ответов от Google, но обнаружил, что они несколько запутывают. Некоторые из ссылок, которые я нашел в Интернете, следующие.

Ответ 1

Ответ 2

Ответ 3

Ответ 4


Я не мог получить точную идею из приведенных выше ответов. Итак, какова же разница между ними?

4b9b3361

Ответ 1

Документация довольно понятна, посмотрели ли вы на нее?

mysql_fetch_array ( resource $result [, int $result_type = MYSQL_BOTH ] )

Возвращает массив строк, соответствующий выбранной строке, или FALSE, если строк больше нет. Тип возвращаемого массива зависит от как определяется result_type. Используя MYSQL_BOTH (по умолчанию), вы получите массив с как ассоциативными, так и числовыми индексами. Используя MYSQL_ASSOC, вы получаете только ассоциативные индексы (как работает mysql_fetch_assoc()), [by], используя MYSQL_NUM, вы получаете только числовые индексы (как работает mysql_fetch_row()).

mysql_fetch_row ( resource $result )

Возвращает числовой массив строк, соответствующий выбранному строка или FALSE, если строк больше нет.

mysql_fetch_row() извлекает одну строку данных из связанного с результатом результата с указанным идентификатором результата. Строка возвращается как массив. Каждый столбец результатов хранится в смещении массива, начиная со смещения 0.

В заключение

mysql_fetch_array( $result, MYSQL_ASSOC )= mysql_fetch_assoc( $result ) mysql_fetch_array( $result, MYSQL_NUM )= mysql_fetch_row( $result )

И

mysql_fetch_array ( $result )= mysql_fetch_assoc( $result ) + mysql_fetch_row( $result )

Ответ 2

Многие из новичков программирования php запутываются в функциях mysql_fetch_array(), mysql_fetch_row(), mysql_fetch_assoc() и mysql_fetch_object(), но все эти функции выполняют аналогичный процесс.

Создадим таблицу "tb" для четкого примера с тремя полями "id", "username" и "password"

Таблица: tb

Вставьте новую строку в таблицу со значениями 1 для id, tobby для имени пользователя и tobby78 $2 для пароля

enter image description here

db.php

<?php
$query=mysql_connect("localhost","root","");
mysql_select_db("tobby",$query);
?>

mysql_fetch_row()

Получить строку результата в виде числового массива

<html>
<?php
include('db.php');
$query=mysql_query("select * from tb");
$row=mysql_fetch_row($query);
echo $row[0];
echo $row[1];
echo $row[2];
?>
</html>

Результат

1 tobby tobby78 $2

mysql_fetch_object()

Получить строку результата как объект

<html>
<?php
include('db.php');
$query=mysql_query("select * from tb");
$row=mysql_fetch_object($query);
echo $row->id;
echo $row->username;
echo $row->password;
?>
</html>

Результат

1 tobby tobby78 $2

mysql_fetch_assoc()

Получить строку результатов как ассоциативный массив

<html>
<?php
include('db.php');
$query=mysql_query("select * from tb");
$row=mysql_fetch_assoc($query);
echo $row['id'];
echo $row['username'];
echo $row['password'];
?>
</html> 

Результат

1 tobby tobby78 $2

mysql_fetch_array()

Получить строку результатов как ассоциативный массив, числовой массив, а также он извлекается как ассоциативным, так и числовым массивом.

<html>
<?php
include('db.php');
$query=mysql_query("select * from tb");
$row=mysql_fetch_array($query);
echo $row['id'];
echo $row['username'];
echo $row['password'];

<span style="color: #993300;">/* here both associative array and numeric array will work. */</span>

echo $row[0];
echo $row[1];
echo $row[2];

?>
</html>

Результат

1 tobby tobby78 $2

Ответ 3

Функция mysql_fetch_object {row/array/assoc}() собирает первую одиночную совпадающую запись в соответствующем формате и может быть восстановлена ​​соответствующим образом.

con.php

<?php
        $host     = $_GET['host'];
        $username = $_GET['username'];
        $pass     = $_GET['pass'];
        $database  = $_GET['database'];
        $connect=new connect($host,$username,$pass,$database);
        class connect{
             function __construct($host,$user,$password,$db_name){
                mysql_connect($host,$user,$password) or die("Connection error");
                mysql_select_db($db_name);
                $error=mysql_error();
                if (!empty($error))
                {
                    echo $error;
                }
            }
        }
        ?>

enter image description here

index.php

<?php
$query=mysql_query("select * from category");
?>

Как будет выглядеть каждое значение при сбросе массива в браузере

mysql_fetch_array

$row=mysql_fetch_array($query);
var_dump($row);

Выход:

array
  0 => string '1' (length=1)
  'id' => string '1' (length=1)
  1 => string '1' (length=1)
  'createdBy' => string '1' (length=1)
  2 => string 'APTITUDE' (length=8)
  'catName' => string 'APTITUDE' (length=8)
  3 => string 'APTITUDE' (length=8)
  'description' => string 'APTITUDE' (length=8)
  4 => string '1' (length=1)
  'status' => string '1' (length=1)

mysql_fetch_row

$row=mysql_fetch_row($query);
var_dump($row);

Выход:

array
  0 => string '1' (length=1)
  1 => string '1' (length=1)
  2 => string 'APTITUDE' (length=8)
  3 => string 'APTITUDE' (length=8)
  4 => string '1' (length=1)

mysql_fetch_assoc

$row=mysql_fetch_assoc($query);
var_dump($row);

Выход:

array
  'id' => string '1' (length=1)
  'createdBy' => string '1' (length=1)
  'catName' => string 'APTITUDE' (length=8)
  'description' => string 'APTITUDE' (length=8)
  'status' => string '1' (length=1)

mysql_fetch_object

$row=mysql_fetch_object($query);
var_dump($row);

Выход:

object(stdClass)[2]
  public 'id' => string '1' (length=1)
  public 'createdBy' => string '1' (length=1)
  public 'catName' => string 'APTITUDE' (length=8)
  public 'description' => string 'APTITUDE' (length=8)
  public 'status' => string '1' (length=1)

Rest @Gaurang предоставил, как использовать выход для вашего кода и других действий.

Ответ 4

mysql_fetch_row возвращает перечисляемый массив, поэтому индекс - это числа. mysql_fetch_array возвращает ассоциативный массив (и по умолчанию - номера слияния для индекса), поэтому mysql_fetch_array возвращает по умолчанию все данные, дублированные в одном массиве, один набор данных с использованием числа в качестве индекса и другого набора, все еще в одном массиве, с ассоциативным индексом (текстовые индексы).

mysql_fetch_row Пример:

Array(2)
    0 => "foo"
    1 => "bar"

mysql_fetch_array Пример (поведение по умолчанию):

Array(4)
    0 => "foo"
    1 => "bar"
    "user" => "foo"
    "name" => "bar"

Ответ 5

Есть 3 функции.   mysql_fetch_assoc   mysql_fetch_row   mysql_fetch_array (комбинация строк и ссылок)

Я бы порекомендовал _assoc или _row оптимизировать ваш код и сохранить его. Если вы захватываете один столбец, используйте   $ row = mysql_fetch_row   $ Строки [0]

Ответ 6

Как говорится в руководстве: mysql_fetch_array() может возвращать массив ассоциативный в зависимости от значений по умолчанию и его второго параметра ( MYSQL_ASSOC, MYSQL_NUM или MYSQL_BOTH).

Пока mysql_fetch_row() всегда возвращает массив индексированный.

Ответ 7

mysql_fetch_array, поскольку руководство говорит, может возвращать индекс int (position), ассоциативный массив или оба в соответствии с выбранным result_type.

с другой стороны mysql_fetch_row всегда возвращать набор результатов на основе целочисленного индекса.

Я лично рекомендую вам использовать mysql_fetch_array, передавая MYSQL_ASSOC в качестве второго параметра, так как всегда легче узнать, какое поле вы хотите извлечь

Ответ 9

Ответьте два из первой ссылки, которую вы указали, правильно. В комментарии говорилось:

"Вместо этого оба возвращают все строки из таблицы. разница между ними - результат возврата fetch_array в ассоциированного массива, а также числового массива, и вы также можете укажите, какой конкретный тип массива вы хотите, предоставляя второй параметр для функции while fetch_row return результат только в числовом массиве. "

... поэтому, используя fetch_row, вы не можете сделать что-то вроде

echo $result['name']; // can do this in fetch_array, not in fetch_row
echo $result[0]; // can do this in fetch_array and fetch_row