- •1. Назначение и характеристики php. Размещение php-кода на Web-странице.
- •2. Переменные и типы данных php. Проверка существования переменной. Приведение типов.
- •3. Константы. Функция echo(). Массивы.
- •4. Ассоциированные массивы.
- •5. Поиск элементов в массиве. Подсчет элементов в массиве. Сортировка массивов. Суперглобальные массивы.
- •6. Обработка html-формы в php.
- •7. Объектно-ориентированные возможности php.
- •8. Работа с файлами и каталогами в php.
- •10. Создание таблиц. Добавление данных в таблицу
- •9. Подключение к серверу бд в php. Выбор бд. Обработка ошибок подключения
- •11. Запрос к бд в php. Анализ результатов запроса. Определение списка баз данных и таблиц. Работа с полями записей.
11. Запрос к бд в php. Анализ результатов запроса. Определение списка баз данных и таблиц. Работа с полями записей.
Чтение данных из БД
Чтобы выполнить чтение данных из БД, нужно сделать SQL-запрос типа SELECT. При успешном выполнении запроса функция mysql_query() возвращает идентификатор результата запроса, и его можно передавать другим функциям для обработки результата
Узнать число записей, возвращенных в результате выполнения запроса SELECT, можно с помощью функции mysql_num_rows(). Этой функции нужно передать идентификатор запроса, а возвращает она число записей, содержащихся в этом результате
Число записей, найденных в запросе
<?php
$user = "serg";
$pass = "xxx";
$db = "sample";
$link = mysql_connect( "localhost", $user, $pass );
if ( ! $link )
exit ( "Cервер БД недоступен" );
if (!mysql_select_db( $db, $link ) )
exit (“БД не доступна”.mysql_error() );
$result = mysql_query( "SELECT * FROM students " );
$num_rows = mysql_num_rows( $result );
echo "Найдено”. $num_rows. “записей в таблице";
mysql_close( $link );
?> Результат запроса
<body>
<?php
$user = “serg";
$pass = “rgrgrgr";
$db = "sample";
$link = mysql_connect( "localhost", $user, $pass );
if ( ! $link )
die( "Couldn't connect to MySQL" );
mysql_select_db( $db, $link)
or die ( "Couldn't open $db: "mysql_error() );
$result = mysql_query ("SELECT * FROM domains" );
$num_rows = mysql_num_rows($result );
print "There are currently $num_rows rows in the table<P>";
print "<table border=1>\n";
while ( $a_row = mysql_fetch_row( $result_у ))
{
print "<tr>\n";
foreach ( $a_row as $field )
print "\t<td>$field</td>\n";
print "</tr>\n";
}
print "</table>\n"; mysql_close( $link );
?>
</body>
Обращение к полям записи
Первый способ
print "<TABLE B0RDER=1>\n";
while ( $a_row = mysql_ fetch_array( $result ) )
{
print "<TR>\n";
print "<TD>$a_row[mail]</TD><TD>$a_row[domain]</TD>\n";
print "</TR>\n";
}
print "</TABLE>\n";
Второй способ
print "<table border=l>\n";
while ( $a_row = mysql_fetch_object( $result ) )
print "<tr>\n";
print "<td>$a_row->mail</td><td>$a_row->domain </td>\n";
print "</tr>\n";
}
print "</table>\n";
Изменение данных в базе
<?php
$user = “serg";
$pass = “rgrgrgr";
$db = "sample";
$link = mysql_connect( "localhost", $user, $pass );
if ( ! $link )
die( "Couldn't connect to MуSQL" );
mysql_select_db( $db, Slink );
or die ( "Couldn't open $db: "mysql_error());
if ( isset( $domain ) && isset( $id ) )
{
$query = "UPDATE domains SET domain= '$domain' where id"=$id";
$result = mysql_query( $query );
if ( ! $result)
die ("Couldn't update: "mysql_error());
print "<h1>Table updated "mysql_affected_rows()
row(s) changed</h1><p>";
?>
<form method=“POST”>
<select name="id">
<?
$result = mysql_query ("SELECT domain, id FROM domains" );
while( $a_row = mysql_fetch_object( $result ) )
{
print "<OPTION VALUE= $a_row->id";
if( isset($id) )
print “SELECTED”;
print " $a_row->domain\n";
}
mysql_close( $link );
?>
</select>
<input type="text" name="domain">
</form>
</body>
</html>
Список баз данных
Список всех баз данных, доступных для данного подключения, можно получить с помощью функции mysql_list_dbs(). Этой функции передается идентификатор подключения. Возвращает функция идентификатор, с помощью которого можно получить список всех доступных баз данных. Для этого вам необходимо вызвать функцию mysql_tablename() для каждой найденной базы данных.
Чтобы узнать, сколько баз данных найдено функцией mysql_list_dbs(), нужно вызвать функцию mysql_num_rows()
Список баз данных. Пример
<body>
<?php
$user = “serg";
$pass = “rgrgrrg";
$link = mysql_connect ("localhost", $user, $pass);
if ( ! $link )
die( "Couldn't connect to MySQL" );
$db_res = mysql_list_dbs( $link );
$num = mysql_num_rows( $db_res );
for( $x = 0; $x < $num; $x++ )
print mysql_tablename( $db_res, $x) <br>;
mysql_close( $link );
?>
</body>
Список таблиц в базе данных
С помощью функции mysql_list_tables() можно получить список всех таблиц, входящих в базу данных. Этой функции нужно передать имя базы данных и необязательный аргумент — идентификатор подключения.
Пример.
$result = mysql_list_tables( "sample", $link );
while ( $tab_rows = mysql_fetch_row( $result ) ){
print "$tab_rows[i]<BR>\n"; i++}
Чтение отдельных полей
Выполнив запрос SELECT, получаем идентификатор результата от функции mysql_query(). Далее можно определить количество возвращенных полей с помощью функции mysql_num_fields (). Этой функции передается идентификатор результата запроса, а возвращает она количество найденных полей.
$iresult = mysql_query( "SELECT * from domains” );
$num_fields = mysql_num_fields( $result );
Каждое поле в этом наборе имеет свой номер, начиная с нуля, и можно определить все его свойства, включая имя, тип, максимальную длину и флаги.
Для выяснения имени поля передайте идентификатор результата и номер поля функции mysql_field_name().
$result = mysql_query( "SELECT * from domains" ;
$num_fields = mysql_num_fields( $result );
for ( $x=0; $x<$num_fields; $x++ )
print mysql_field_name( $result, $x );
Для того чтобы узнать максимальную длину поля, передайте идентификатор результата и номер поля функции mysql_field_len().
$result = mysql_query (“SELECT * from domains" );
$num_fields = mysql_num_fields( $result );
for ( $x=0; ,$x<$num_fields; $x++ )
print mysql_field_len( $result, $x ) ";
Для того чтобы узнать флаги, связанные с этим полем, передайте идентификатор результата и номер поля функции mysql_field_flags().
$result = mysql_query( "SELECT * from domains" );
$num_fields = mysql_num_fields( $result };
for ( $x=0; $x<$num_fields; $x++ )
print mysq_field_flags( $result, $x, );
Точно так же можно выяснить тип поля.
$result = mysql_query( "SELECT * from domains" );
$num_fields = mysql_num_fields( $result );
for ( $x=0; $x<$num_fields; $x++ )
print mysql_field_flags($result, $x ) ";
Пример. Вывод структуры базы данных
<body>
<?php
$user = "root";
$pass = “serg";
$db = "sample" ;
$link = mysql_connect( "localhost", $user, $pass" );
if ( ! $link )
die( "Couldn't connect to MySQL");
$db_res = mysql_list_dbs( $link );
while ( $db_rows = mysql_fetch_row( $db_res ) )
{
print "<b>$db rows[0]</b>\n";
if ( ! mysql_select_db( $db_rows[0]), $link) ;
{
print "<dl><dd>couldn't connect " mysql_error();
continue;
$tab_res = mysql_list_tables( $db_rows[0], $link ));
print "\t<dl><dd>\n";
while ( $tab rows = mysql_fetch_row( $tab_res) )
{
print "\t<b>$tab_rows[0]</b>\n;
$query_res = mysql_query( "SELECT * from $tab_rows[0]" );
$num_ fields = mysql_num_fields ( $guery_res);
print "\t\t<dl><dd>\n";
for ( $x=0; $x<$num_fields; $x++ )
{
print "\t\t<i>";
print mysql_field_type ($query_res, $x );
print "</i> <i>";
print mysql_field_len( $query_res, $x );
print "</i> <b>";
print mysql_field_name( $query_res, $x );
print "</b> <i>";
print mysql_field_flags( $query_res, $x);
print "</i><br>\n;
}
print "\t\t</dl>\n";
}
print "\t</dl>\n";
}
mysql_close( $link );
?>
</body> </html>
