Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Веб программирование.Начало.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
7 Мб
Скачать
☆

Выборка данных из таблиц бд

Выборка данных из таблиц базы производится SQL командой SELECT в соответствии с заданным условием Where.

$result=mysql_query(“SELECT …”);

Для обработки данных, на которые указывает дескриптор result в PHP имеются ряд функций. Функция int mysql_num_rows(int result) возвращает количество строк в результате запроса. Функция

int mysql_result(result, i, column);

возвращает значение поля в столбце column и в строке i. Функция

mysql_fetch_row($result))

возвращает массив соответствующий очередной записи таблицы.

Функция mysql_fetch_array(result) возвращает результаты запроса в виде ассоциированного массива

<?php

$db = mysql_connect("localhost", "root");

mysql_select_db("mydb",$db);

$result = mysql_query("SELECT * FROM employees",$db);

$str= mysql_result($result,0,"first");

printf("First Name: %s<br>\n",$str);

$str= mysql_result($result,0,"last");

printf("Last Name: %s<br>\n",$str);

$str= mysql_result($result,0,"address");

printf("Address: %s<br>\n",$str);

$str= mysql_result($result,0,"position");

printf("Position: %s<br>\n",$str);

mysql_close($db);

?>

Здесь мы обращаемся к таблицам базы данных с запросом на языке SQL. Для исполнения запроса служит функция mysql_query(). Результаты выполнения запроса помещаем в переменную $result.

С помощью функции mysql_result() извлекаем из переменной $result, первую запись (порядковый номер 0), и значение определенного поля (по его имени). Перебирая друг за другом записи, выберем все записи, что хранятся в базе данных.

Рассмотрим более современные, чем mysql_result(), функции выборки данных mysql_fetch_row() и mysql_fetch_array() и выведем все записи, хранящиеся в базе.

<html> <body>

<?php

$db = mysql_connect("localhost", "root");

mysql_select_db("mydb",$db);

$result = mysql_query("SELECT * FROM employees",$db);

echo "<table border=1>\n";

echo "<tr><td>Name</td><td>Position</tr>\n";

while ($myrow = mysql_fetch_row($result))

{

printf("<tr><td>%s %s</td><td>%s</td></tr>\n", $myrow[1], $myrow[2], $myrow[3]);

}

echo "</table>\n";

?>

</body> </html>

Цикл while() говорит, что пока в переменной $result остается запись для выборки, ее необходимо извлечь с помощью функции mysql_fetch_row() и присвоить переменной $myrow. А после этого выполнить код, расположенный внутри фигурных скобок "{}". Функции mysql_fetch_row() в качестве параметра передается массив $result. Функция выбирает из него строку, которую мы можем записать в переменную $myrow и автоматически переходит на следующую строку. При достижении конца массива mysql_fetch_row() вернет значение false.

Выбранный ряд будет храниться в массиве $myrow. Элементы массивов нумеруются от 0. Пример соединения с БД и выборки записей.

<?// php428bd.php - скрипт создает БД и таблицу

$dbName ="mydb";

/* создать соединение */

$link = mysql_connect("localhost", "valera", "12345")

or exit("Could not connect");

mysql_select_db("$dbName",$link) or die("Не могу выбрать базу данных ");

//создать SQL - запрос

$sqlq="Select * from students";

//

$result = mysql_query($sqlq,$link) or die ("Invalid query");

$myrow=mysql_fetch_array($result); //установка первой записи

echo $myrow["name"];//вывод поля “name” первой записи

do//цикл просмотра всех записей

{

echo “сотрудник-”, $myrow[‘id’];

echo $myrow["name"];

}

while($myrow=mysql_fetch_array($result));

MYSQL_CLOSE();/* Закрыть соединение */

?>

<html><body>

<?php

$db = mysql_connect("localhost", "root");

mysql_select_db("mydb",$db);

$result = mysql_query("SELECT * FROM employees",$db);

if ($myrow = mysql_fetch_array($result))

{

echo "<table border=1>\n";

echo "<tr><td>Name</td><td>Position</td></tr>\n";

do

{

printf("<tr><td>%s %s</td><td>%s</tr>\n", $myrow["first"], $myrow["last"],

$myrow["address"]);

}

while ($myrow = mysql_fetch_array($result));

echo "</table>\n";

}

else

{echo "Sorry, no records were found!";}

?>

</body></html>

Здесь вместо mysql_fetch_row() была использована функция mysql_fetch_array(), с помощью которой можно обращаться к каждому полю массива не по номеру, а по имени. Например, если раньше для получения имени нам приходилось писать $myrow[1], то теперь мы можем писать $myrow["first"] ("first" – название столбца в базе данных и в массиве).

Рассмотрим параметры запроса. Существует несколько способов передачи параметров запроса. Первый, использовать метод GET или POST для передачи данных из формы. Второй – набрать параметры прямо в адресной строке браузера при использовании метода GET. И третий, это вставить параметры в обычную ссылку на странице. То есть при использовании метода GET сделать ссылку следующего вида

<a href="http://my_machine/mypage.php3?id=1">

Для начала, обратимся к базе данных и выведем список персонала.

<html><body>

<?php

$db = mysql_connect("localhost", "root");

mysql_select_db("mydb",$db);

$result = mysql_query("SELECT * FROM employees",$db);

if ($myrow = mysql_fetch_array($result))

{

do

{

printf("<a href=\"%s?id=%s\">%s %s</a><br>\n", $PHP_SELF, $myrow["id"],$myrow["first"], $myrow["last"]);

}

while ($myrow = mysql_fetch_array($result));

}

else

{ echo "Sorry, no records were found!"; }

?>

</body> </html>

Обратные косые черты говорят PHP-движку, что необходимо вывести символ, следующий за чертой, а не рассматривать его, как служебный символ. Далее, в коде используется интересная переменная $PHP_SELF. В этой переменной всегда хранится имя и URL текущей страницы. В данном случае эта переменная важна для нас потому, что мы хотим через ссылку вызвать страницу из нее самой. С помощью условий if-else мы будем переводить стрелки с одного кода на другой, гоняя одну и ту же страницу по кругу. Переменная $PHP_SELF гарантирует, что страница будет работать даже в том случае, если мы перенесем ее в другой каталог или даже на другую машину. К имени самой страницы на лету добавлена информация: переменные и их значения. При втором проходе страницы программа отреагирует на эти пары name=value. В данном случае проверим, есть ли переменная $id, и в зависимости от результата выполним тот или иной код. Вот как это будет выглядеть:

<html><body>

<?php

$db = mysql_connect("localhost", "root");

mysql_select_db("mydb",$db);

if ($id)

{

$result = mysql_query("SELECT * FROM employees WHERE id=$id",$db);

$myrow = mysql_fetch_array($result);

printf("First name: %s\n<br>", $myrow["first"]);

printf("Last name: %s\n<br>", $myrow["last"]);

printf("Address: %s\n<br>", $myrow["address"]);

printf("Position: %s\n<br>", $myrow["position"]);

}

else

{

// show employee list

$result = mysql_query("SELECT * FROM employees",$db);

if ($myrow = mysql_fetch_array($result))

{

// display list if there are records to display

do

{

printf("<a href=\"%s?id=%s\">%s %s</a><br>\n", $PHP_SELF, $myrow["id"],

$myrow["first"], $myrow["last"]);

}

while ($myrow = mysql_fetch_array($result));

}

else

{

echo "Sorry, no records were found!";

}

}

?>

</body></html>