Необходимо сделать нужные изменения (изменить название базы данных на testbase) в файле config.php:
Таблица people создана:
Можно просмотреть перечень таблиц созданной базы данных c помощью оператора SHOW:
Можно отобразить информацию о столбцах всех таблиц c помощью оператора DESCRIBE:
Для просмотра данных, сохраненных в таблице, можно применить оператор SELEKT:
Рекомендуется всегда создавать таблицы прямо в скриптах, которые с ними работают, потому что это делает сценарии автономными. К сожалению многие скрипты так не поступают. Обычно к ним прилагается SQL-файл с командами создания таблиц, который нужно запустить перед установкой скриптов. Этот способ не рекомендуется.
2.2 Вставка записей в таблицу. Функция INSERT
INSERT INTO ИмяТаблицы(ИмяПоля1 ИмяПоля2 ...) VALUES ('зн1', 'зн2',...)
Добавляет в таблицу ИмяТаблицы запись, у которой поля, обозначенные как ИмяПоля1 ИмяПоля2 ...установлены в значения соответственно зн№.
Те поля, которые в этой команде не перечислены, получают "неопределенные" значения.
Неопределенное значение (NULL) — это не пустая строка, а просто признак, который говорит MySQL, что у данного поля нет никакого значения.
Впрочем, если для неуказанного здесь поля при создании таблицы был задан NOT NULL, то поле получит значение по умолчанию (чаще всего 0 или пустая строка). Значения полей можно заключать и в обычные кавычки, но апострофы тут использовать удобнее; к тому же, так положено по стандарту SQL. При вставке в таблицу бинарных данных (или текстовых, содержащих апострофы и слэши) некоторые символы должны быть "защищены" обратными слэшами, а именно символы \, ' и символ с нулевым кодом (в РНР обозначается как "\х00" или chr(0)).
Существует альтернативный синтаксис для данной команды, специфичный для MySQL:
INSERT INTO ИмяТаблицы SET ИмяПоля1='зн1', ИмяПоля2='зн2', . . .
На практике он часто оказывается удобнее первого.
2.3 Удаление записей. Функция DELETE
DELETE FROM ИмяТаблицы WHERE выражение
Удаляет из таблицы ИмяТаблицы все записи, для которых выполнено выражение. Параметр выражение — это просто логическое выражение, составленное "почти" по правилам РНР. Вот показательный пример:
DELETE FROM topics WHERE forum_id=10 AND user != "moderator"
В выражении, помимо имен полей, констант и операторов, могут также встречаться простейшие "вычисляемые" части, например: (id < 10+11*234).
Вообще говоря, формат выражения един для всех команд запросов, которые мы встретим в дальнейшем. Например, он же используется и в операции SELECN, и в операции UPDATE.
2.3 Обновление записей. Функция UPDATE
UPDATE ИмяТаблицы SET (ИмяПоля1= 'зн1', ИмяПоля1— 'зн2', ...) WHERE выражение
В таблице ИмяТаблицы для всех записей, удовлетворяющих выражению выражение, указанные поля устанавливаются в соответствующие значения. При этом остальные поля остаются без изменения. Эта команда часто выполняется, если не требуется обновлять сразу все поля какой-то записи, а нужно затронуть только некоторые.
2. Отправка запроса серверу для извлечения одной стоки из таблицы базы данных. Функция mysql_query
resource mysql_query (string query)
Эта функция применяется для отправки серверу SQL-запросов. Функция возвращает дескриптор запроса в случае успеха и false — в случае неудачного выполнения запроса.
В листинге показан код, с помощью которого извлекается одна строка из таблицы customers базы данных books:
<?
include "config.php";//Подключение к серверу и выбор базы данныхх
$ath = mysql_query("select * from customers;");
if($ath)
{
$author = mysql_fetch_array($ath);
echo "<br>имя = ".$author['name']."<br>";
echo "адрес = ".$author['city']."<br>";
}
else
{
echo "<p><b>Error: ".mysql_error () . "</b></p>" ;
exit () ;
}
?>
Результат выполнения запроса для вывода одной строки из таблицы:
2.. Вывод всех строк таблицы базы данных в виде ассоциативного массива. Функция mysql_fetch_array
array mysql_fetch_array (resource result)
Эта функция возвращает значения полей в виде ассоциативного массива. В качестве аргумента принимает дескриптор запроса, возвращаемый функцией mysql_query.
В листинге показано, как с помощью этой функции можно вывести все строки таблицы customers:базы данных books
<?
include "config.php";//Подключение к серверу и выбор базы данных
$ath = mysql_query("select * from customers;");
if($ath)
{
//Определяем таблицу и заголовок
echo "<table border=1>";
echo"<tr>
<td>имя</td>
<td>адрес</td>
</tr>";
//Так как запрос возвращает несколько строк, применяем цикл
while($author = mysql_fetch_array($ath))
{
echo "<tr>
<td>".$author['name']." </td>
<td>".$author['city']."   </td>
</tr>";
}
echo "</table>";
}
else
{
echo "<p><b>Error: " .mysql_error () . "</b><p>";
exit () ;
}
?>
Результат выполнения запроса для вывода всех строк из таблицы:
2.. Доступ к отдельному полю записи. Функция mysql_result
mixed mysql_result (resource result, int row)
С помощью этой функции можно получить доступ к отдельному полю записи. Допустим, нам нужно вывести имя автора, которое первым найдется в базе данных. Сделать это можно следующим образом:
<?
include "config.php";//Подключение к серверу и выбор базы данных
$ath = mysql_query("select name from customers;");
if($ath)
{
echo mysql_result($ath,0,'name');
}
else
{
echo "<p><b>Error: " .mysql_error () . "</b><p>";
exit () ;
}
?>
2.. Возвращение поля записи в виде объекта. Функция mysql_fetch_object
object mysql_fetch_object (resource result)
Эта функция возвращает поля записи данных в виде объекта.
В листинге приведен пример, в котором с помощью этой функции из таблицы customers выводятся имя, и адрес авторов:
<?
include "config.php";//Подключение к серверу и выбор базы данных
$ath = mysql_query("select * from customers;");
if($ath)
{
while($row = mysql_fetch_object($ath))
{
echo "<p>имя: ".$row->name."</p>";
echo "<p>адрес: ".$row-> city."</p>";
}
}
else
{
echo "<p><b>Error: ".mysql_error () . "</b><p>";
exit();
}
?>
Результат выполнения скрипта:
2.. Возвращение массива, в котором содержится значение поля. Функция mysql_fetch_row
array mysql_fetch_row (resource result)
В отличие от функции mysql_fetch_object, эта функция возвращает не объект, а массив, в котором содержатся значения полей:
<?
include "config.php";//Подключение к серверу и выбор базы данных
$ath = mysql_query("select * from customers;");
if($ath)
{
while($row = mysql_fetch_row($ath))
{
echo "<p>имя: ".$row[3]."</p>";
echo "<p>адрес: ".$row[2]."</p>";
}
}
else
{
echo "<p><b>Error: " .mysql_error () . "</b><p>";
exit ();
}
?>
Результаты выполнения этого кода:
2.. Пример комплексного использования информационных функций
Листинг info_1.php
<?php ## Получение информации о таблице.
include "config.php";//Подключение к серверу и выбор базы данных
// Получаем все данные таблицы.
$result = mysql_query('SELECT * FROM people');
// Запрашиваем идентификатор данных о полях таблицы.
$fields = mysql_num_fields ($result);
// Узнаем число записей в таблице.
$rows = mysql_num_rows($result);
// Получаем имя таблицы (правда, мы его и так знаем, но все же...)
$table = mysql_field_table($result,0);
echo "Таблица '$table' содержит $fields колонок и $rows cтpoк<BR>"
echo "Таблица содержит следующие поля:<ВR>";
// "Проходимся" по всем полям и выводим информацию о них.
for ($i=0; $i<$fields; $i++)
{
$type = mysql_field_type($result, $i);
$name = mysql_field_name($result, $i);
$len = mysql_field_len($result, $i);
$flags.= mysql_field_flags($result, $i) ;
echo "$name $type($len) $flags<BR>\n";
}
?>
3. MySQL И ПРОБЛЕМЫ БЕЗОПАСНОСТИ
Запросы, отправляемые серверу MySQL, представляют собой обыкновенные строки РНР:
mysql_query("INSERT INTO table SET name='$name'");
В $name может храниться строка, содержащая апострофы.
Рассмотрим, какой запрос придет серверу MySQL, если $name равно "cat's":
INSERT INTO table SET name='cat's'
Эта команда синтаксически некорректна и породит ошибку во время выполнения.
Но может быть и хуже.
Рассмотрим такой запрос:
mysql_query("DELETE FROM table WHERE name='$name'");
Если параметр $name приходит из формы, и злоумышленник указал в нем следующую строку: "!' or 1=1 or '!", то после подстановки получится такой запрос к базе данных:
DELETE FROM table- WHERE name=' !' OR 1=1 OR ' !'
Этот запрос удалит все записи из таблицы table, потому что выражение SQL 1=1 всегда истинно.
Рассмотрим два способы защиты от подобных ошибок или действий злоумышленника: