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

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


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

Ответ 1

Ответ 2

Ответ 3

Ответ 4


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

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

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

Возвращает массив строк, соответствующий выбранной строке, или FALSE, если больше строк нет. Тип возвращаемого массива зависит от того, как определяется result_type. Используя MYSQL_BOTH (по умолчанию), вы получите массив с ассоциативными и числовыми индексами. Используя MYSQL_ASSOC, вы получаете только ассоциативные индексы (как работает mysql_fetch_assoc ()), используя 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 )

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

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

Таблица: tb

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

введите описание изображения здесь

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> в <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> в <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> в <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> в <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

Функция 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; } } } ?> 

введите описание изображения здесь

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 предоставил, как использовать выход для вашего кода и других действий.

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" 

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

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

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

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

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

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

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

Fetch row возвращает числовой массив для текущей записи

http://www.php.net/manual/en/function.mysql-fetch-row.php

Массив Fetch будет по умолчанию возвращать полный массив id => key => value, но он также предлагает возможность выбора либо числового, либо ассоциативного возврата

http://www.php.net/manual/en/function.mysql-fetch-array.php

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

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

… так что с помощью 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