mysql_fetch_row
This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide. Alternatives to this function include:
Description
Returns a numerical array that corresponds to the fetched row and moves the internal data pointer ahead.
Parameters
The result resource that is being evaluated. This result comes from a call to mysql_query() .
Return Values
Returns an numerical array of strings that corresponds to the fetched row, or false if there are no more rows.
mysql_fetch_row() fetches one row of data from the result associated with the specified result identifier. The row is returned as an array. Each result column is stored in an array offset, starting at offset 0.
Examples
Example #1 Fetching one row with mysql_fetch_row()
$result = mysql_query ( «SELECT id,email FROM people WHERE » );
if (! $result ) echo ‘Could not run query: ‘ . mysql_error ();
exit;
>
$row = mysql_fetch_row ( $result );
?php
echo $row [ 0 ]; // 42
echo $row [ 1 ]; // the email value
?>
Notes
Note: This function sets NULL fields to the PHP null value.
See Also
- mysql_fetch_array() — Fetch a result row as an associative array, a numeric array, or both
- mysql_fetch_assoc() — Fetch a result row as an associative array
- mysql_fetch_object() — Fetch a result row as an object
- mysql_data_seek() — Move internal result pointer
- mysql_fetch_lengths() — Get the length of each output in a result
- mysql_result() — Get result data
User Contributed Notes 4 notes
Maybe worth pointing out that all the fields returned by this (and other?) calls are returned with type string. This had me puzzled for quite some time.
require ‘prhlavicka.php’ ;
pis_hlavicku ( ‘Vypis článků’ );
?php>
require_once ‘db.php’ ;
$kom = new server ();
$sql = $kom -> query ( «SELECT autor,nazev,obsah FROM `Clanky_Sadek`» );
while ( $data = mysql_fetch_row ( $sql )) ECHO ‘
—AUTOR—
‘ . $data [ 0 ]. ‘
__NÁZEV ČLÁNKU__
‘ . $data [ 1 ]. ‘
..OBSAH ČLÁNKU..
‘ . $data [ 2 ]; >
to print an array, simply use print_r(array name)
like this:
$myrow = mysql_fetch_row($result);
echo «
";
print_r($myrow);
echo "
«;
this will output the array in a readable form, with the index, too. Don’t forget the ‘pre’ tags or the output will be on a single line.
$esi = mysql_list_tables ( $db ); $ris = mysql_fetch_row ( $esi );
//example: $db has >= 1 tabs
echo var_dump ( $ris );
//echoes only array(1). solution:
while( $ris = mysql_fetch_row ( $esi )) echo $ris [ 0 ];
/*debug:
$ris=array(«1st_tab»); . $ris=array(«n_tab»);$ris=false;*/
while ( $ris []= mysql_fetch_row ( $esi ));
//debug:$ris=array(array(«1st_tab»), . array(«n_tab»));
echo $ris [ n ][ 0 ]; //echo:»n_tab»
echo $ris [ 0 ][ n ]; //echo:array | null
?>
hope it helps
- MySQL Functions
- mysql_affected_rows
- mysql_client_encoding
- mysql_close
- mysql_connect
- mysql_create_db
- mysql_data_seek
- mysql_db_name
- mysql_db_query
- mysql_drop_db
- mysql_errno
- mysql_error
- mysql_escape_string
- mysql_fetch_array
- mysql_fetch_assoc
- mysql_fetch_field
- mysql_fetch_lengths
- mysql_fetch_object
- mysql_fetch_row
- mysql_field_flags
- mysql_field_len
- mysql_field_name
- mysql_field_seek
- mysql_field_table
- mysql_field_type
- mysql_free_result
- mysql_get_client_info
- mysql_get_host_info
- mysql_get_proto_info
- mysql_get_server_info
- mysql_info
- mysql_insert_id
- mysql_list_dbs
- mysql_list_fields
- mysql_list_processes
- mysql_list_tables
- mysql_num_fields
- mysql_num_rows
- mysql_pconnect
- mysql_ping
- mysql_query
- mysql_real_escape_string
- mysql_result
- mysql_select_db
- mysql_set_charset
- mysql_stat
- mysql_tablename
- mysql_thread_id
- mysql_unbuffered_query
Выборка информации из базы данных
Для выполнения sql-запросов типа SELECT (запрос, который должен вернуть результат) средствами с расширением PDO мы должны воспользоваться методом объекта PDO — query() , в качестве первого параметра передаем sql-запрос.
При этом возвращается специальный объект результата выполненного запроса (Statement), который мы можем использовать для получения готового результата.
// Подключение к базе данных
try <
$pdo = new PDO ( ‘mysql:host=localhost;dbname=test2’;charset=utf-8 , ‘root’ , » );
$pdo -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
echo «Успешное подключение» ;
> catch exit ( ‘Ошибка подключения:
‘ . $e -> getMessage ());
>> catch exit ( ‘Ошибка в запросе:
‘ . $e -> getMessage ());
>
?>Выведет:
PDOStatement Object ( [queryString] => SELECT id, title FROM news )Использование цикла foreach для выборки данных и получения готового результата
(проходимся по объекту $result , как будто это обычный массив)
foreach ( $result as $row ) echo «
» . $row [ ‘id’ ] . » | » . $row [ ‘title’ ];
>// Подключение к базе данных
try <
$pdo = new PDO ( ‘mysql:host=localhost;dbname=test2’;charset=utf-8 , ‘root’ , » );
$pdo -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
echo «Успешное подключение» ;
> catch exit ( ‘Ошибка подключения:
‘ . $e -> getMessage ());
>> catch exit ( ‘Ошибка в запросе:
‘ . $e -> getMessage ());
>
?>Выведет:
1 | Новость 1
2 | Новость 2
3 | Новость 3
4 | Новость 4
5 | Новость 5Метод fetch()
Использование цикла while
Для выборки данных и получения готового результата можно использовать метод fetch() объекта PDOStatement
Метод fetch() извлекает следующую строку из результирующего набора .
В качестве параметра мы передаем одну из констант (стиль работы данного метода):
PDO::FETCH_ASSOC — метод fetch() в качестве результата своей работы будет возвращать ассоциативный массив.
while ( $row = $result -> fetch ( PDO :: FETCH_ASSOC )) echo «
» . $row [ ‘id’ ] . » | » . $row [ ‘title’ ];
>PDO::FETCH_NUM — возвращает данные в виде простого индексного массива. В этом случае необходимо обращаться к ячейкам по их индексам:
while ( $row = $result -> fetch ( PDO :: PDO::FETCH_NUM )) echo «
» . $row [ 0 ] . » | » . $row [ 1 ];
>PDO::FETCH_BOTH (по умолчанию) — возвращает данные в виде и ассоциативного массив и простого индексного массива. Обращаться можно как по именам ячеек, так и по их индексам.
PDO::FETCH_OBJ — возвращает данные в виде объекта. В этом случае в переменной $row мы получим объект и обращаться будем к его свойствам :
while ( $row = $result -> fetch ( PDO :: PDO::FETCH_NUM )) // Здесь обращаемся к свойствам объекта $row
echo «» . $row -> id . » | » . $row -> title ;
>// Подключение к базе данных
try <
$pdo = new PDO ( ‘mysql:host=localhost;dbname=test2’;charset=utf-8 , ‘root’ , » );
$pdo -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
echo «Успешное подключение» ;
> catch exit ( ‘Ошибка подключения:
‘ . $e -> getMessage ());
>// Использование цикла while и константы FETCH_ASSOC:
while ( $row = $result -> fetch ( PDO :: FETCH_ASSOC )) echo «» . $row [ ‘id’ ] . » | » . $row [ ‘title’ ];
>
———————————————————————> catch exit ( ‘Ошибка в запросе:
‘ . $e -> getMessage ());
>
?>Выведет:
1 | Новость 1
2 | Новость 2
3 | Новость 3
4 | Новость 4
5 | Новость 5— получаем такой же результат, как и при использовании цикла foreach
PDO::FETCH_CLASS — при использовании этой константы метод fetch() будет передавать данные непосредственно в специальный класс, имя которого мы должны задать в специальной настройке.
Соответственно, в переменную $row попадет уже объект этого класса. При этом в этот объект уже будут переданы данные в соответствующие свойства.
Перед вызовом метода fetch() мы должны обратиться к объекту класса PDOStatement и вызвать на исполнение метод setFetchMode .
Метод setFetchMode устанавливает режим работы метода fetch() .
Первым параметром он принимает константу PDO::FETCH_CLASS , вторым — имя класса , в который будут переданы параметры и объект которого будут возвращен в качестве результата работы данного метода.
$result -> setFetchMode ( PDO :: PDO::FETCH_CLASS , ‘News’ );
while ( $row = $result -> fetch ()) // Здесь обращаемся к методам класса News (news.php)
echo «» . $row -> getId () . » | » . $row -> getTitle ();
>Создадим этот класс в котором будут два свойства (их имена совпадают с именами выбранных полей) и два метода.
class News
<
protected $id ;
protected $title ;// Метод будет возвращать значение свойства $id
public function getId () //. здесь мы можем производить какие-то манипуляции с данными свойствами .
return $this -> id ;
>// Метод будет возвращать значение свойства $title
public function getTitle () //. здесь мы можем производить какие-то манипуляции с данными свойствами .
return $this -> title ;
>
>
?>В индексном файле подключаем класс news.php
include ‘news.php’ ; // подключаем класс news.php
// Подключение к базе данных
try <
$pdo = new PDO ( ‘mysql:host=localhost;dbname=test2’;charset=utf-8 , ‘root’ , » );
$pdo -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
echo «Успешное подключение» ;
> catch exit ( ‘Ошибка подключения:
‘ . $e -> getMessage ());
>// Использование константы PDO::FETCH_CLASS и метода setFetchMode
$result -> setFetchMode ( PDO :: PDO::FETCH_CLASS , ‘News’);
while ( $row = $result -> fetch ()) // Здесь обращаемся к методам класса News (news.php)
echo «» . $row -> getId () . » | » . $row -> getTitle ();
>
———————————————————————> catch exit ( ‘Ошибка в запросе:
‘ . $e -> getMessage ());
>
?>Выведет:
1 | Новость 1
2 | Новость 2
3 | Новость 3
4 | Новость 4
5 | Новость 5— во всех случаях получаем один и тот же же результат.
Метод fetchAll()
Метод fetchAll() — возвращает массив, содержащий все строки результирующего набора
Этот метод удобен тем, что один раз его вызвав, мы сразу получаем массив выбранных данных.
Метод fetchAll() и константа PDO::FETCH_ASSOC
$result -> setFetchMode ( PDO :: FETCH_ASSOC );
print_r ( $result -> fetchAll ());Получаем многомерный массив:
Array
(
[0] => Array
(
[id] => 1
[title] => Новость 1
)
[1] => Array
(
[id] => 2
[title] => Новость 2
)
[2] => Array
(
[id] => 3
[title] => Новость 3
)
[3] => Array
(
[id] => 4
[title] => Новость 4
)
[4] => Array
(
[id] => 5
[title] => Новость 5
)
)Метод fetchAll() и константа PDO::FETCH_OBJ
$result -> setFetchMode ( PDO :: FETCH_OBJ );
print_r ( $result -> fetchAll ());Получаем массив объектов:
Array
( [0] => stdClass Object
(
[id] => 1
[title] => Новость 1
)
[1] => stdClass Object
(
[id] => 2
[title] => Новость 2
)
.
.
.
)