Бази данни (Част 4)

Извличане на данни от таблица


Извличането на данни от БД се различава от процеса на съхранението им по това, че е необходимо на извличаната информация да се назначи променлива, която да ги съхранява.
Преди да започне извличането на данни от БД, е необходимо да се създаде връзка към нея, след това изпращаме заявка за данните, които искаме да извлечем и накрая следва самият процес по извличане на данните.

Заявката за извличане на данни от базата данни има следния синтаксис:

SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[MAX_STATEMENT_TIME = N]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr [, select_expr ...]
[FROM table_references
[PARTITION partition_list]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[INTO OUTFILE 'file_name'
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE 'file_name'
| INTO var_name [, var_name]]
[FOR UPDATE | LOCK IN SHARE MODE]]

SELECT връща редовете, селектирани от една или повече таблици в БД.

select_expr- показва колоната, която искате да обработите (в случая това е колоната, чието съдържание искате да разгледате);

table_references- показва името на таблицата (таблиците), чийто редове искате да разгледате;

WHERE- тази клауза ще липсва в заявката, ако селектирате всички редове;

FROM- показва от коя таблица ще извличаме информация;

ORDER BY- тази клауза определя коя колона сме избрали като начална.

Повече информация на адрес: http://dev.mysql.com/doc/

Функцията, която ще поставя в масив извлечените данни, е fetch_array().

Синтаксисът на функцията fetch_array() е:

mixed mysqli_fetch_array (mysqli_result $result [, int $resulttype = MYSQLI_BOTH])

$result- задължителен параметър. Идентификатор, върнат от функцията mysqli_query().

$resulttype- незадължителен параметър. Определя вида на масива, който ще се продуцира. Като стойност може да приеме една от следните константи: MYSQLI_ASSOC, MYSQLI_NUM или MYSQLI_BOTH.

Повече информация на адрес: http://php.net

Съдържанието на файла DB_display.php:
<!Doctype html>
<html>
<head>
<title>Извличане на данни от БД</title>
<meta http-equiv="Content-Type" content="text/html"; charset="UTF-8">
</head>
<body>
<?php

$host = "localhost";
$user = "user";
$password = "password";
$DBName = "PolyDB";

//създава връзка към БД
$link = new mysqli ($host, $user, $password, $DBName) 
or die ("Невъзможно свързване");

//Заявка към БД. Звездичката означава да се извлекат
//всички данни от избраната таблица
$sql = "SELECT * FROM Потребители ORDER by ID";
$result=mysqli_query($link, $sql);


if ( $result=$link-> query($sql)) {
 //Създава таблица с извлечените данни от БД
 echo "<table border=\"1\" cellspacing=\"4\" cellpadding=\"4\">
  <tr><th>ID</th><th>Име</th><th>Фамилия</th>
  <th>Имейл</th><th>Коментар</th></tr>";
    
 //Цикъл за извличане на данните от всеки ред
     while($row = $result ->fetch_array()) {
  
 echo "<th style = \"color: blue;\">$row[ID]</th>" . " " . 
 "<th style = \"color: blue;\">$row[Име]</th>" . " " . 
 "<th style = \"color: blue;\">$row[Фамилия]</th>" . " " . 
 "<th style = \"color: blue;\">$row[Имейл]</th>" . " " . 
 "<th style = \"color: blue;\">$row[Коментар]</th>" . " " .
 "<tr></tr>";
    }
echo "</table>";
} 
else {
    echo "БД не съдържа търсената информация.";
}
$link -> close();
?> 
</body>
</html>
Всяка итерация на цикъла while превръща следващия ред информация от заявката (съхранена в променливата $result), в масив $row. Този процес продължава докато се обходят всички редове в таблицата. Резултатът от този процес се помества в HTML таблица.
Можете да тествате файла.

DB_display.png
Фиг1.: Тест на "DB_select.php" в браузъра
sign.png

Няма коментари:

Публикуване на коментар