Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
IntTeh_kt1.docx
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
59 Кб
Скачать
☆

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>