Поиск

Создание таблицы

После создания исходной базы данных разумно приступить к генерированию отдельных таблиц в ней. БД может содержать много таблиц, каждая из кото рых состоит из столбцов и строк.

Создадим простую таблицу, где будут храниться данные. Для этого использу ем язык SQL. Составляем SQLзапрос и обращаемся с ним к базе данных следу ющим образом:

$Query="текст запроса в формате SQL";
mysql_db_query("DatabaseName",$Query,$Link);

Так как SQL похож на обычный английский язык, запрос на создание базы данных будет выглядеть так:

$Query="CREATE table TABLENAME(columnl, column2 и т . д . ) " ;

Каждому столбцу, отделенному от других запятыми, необходимо присвоить имя и тип. Типичные типы TEXT (текст) и INT (целое число). Теория реляци онных БД требует, чтобы первый столбец создавался как первичный ключ, ко торый мог бы однозначно идентифицировать всю строку. Поэтому запрос на создание таблицы должен быть таким:

$Query="CREATE table NewTable(id INT PRIMARY KEY, information TEXT)";

Первичный ключ таблицы это специальный столбец с уникальными зна чениями, используемыми для обращения к табличным строкам. Этот столбец индексируется в базе данных для того, чтобы вы могли быстрее передвигаться по таблице. Последняя может иметь только один первичный ключ, который я обычно задаю как автоматически увеличивающееся на единицу целое число. Первая строка будет иметь ключ 1, вторая 2 и т.д. В дальнейшем с помощью первичного ключа (подобно индексу в массиве) можно извлекать значения из этой строки таблицы.

Более подробные сведения о SQL содержатся на сайте MySQL (рис. 11.1). Однако предоставленной здесь информации вполне достаточно для выполне ния основных задач при работе с базами данных.

Создадим таблицу, в которой будут храниться данные, передаваемые из HTMLформы. В следующем разделе этой главы мы напишем сценарий, кото рый будет вставлять отправленные материалы в созданную здесь таблицу.

Создание новой таблицы

    ?i
  1. Создайте новый PHPдокумент в текстовом редакторе.
  2. Напишите стандартный HTML'Зaгoлoвoк.
  3. <HTMLxHEADxTITLE>Creating a Table</TITLEx/HEADxBODY>
  4. Откройте PHPраздел сценария и задайте переменные для доступа к базе данных.
  5. <?php
    $Host = "localhost";
    $User = "user";
    $Password = "password";
    $DBName = "NewDatabase";
    $TableName = "Feedback";

    Обратите внимание на то, что к списку из листинга 11.1 мы добавили еще одну переменную $TableName. Она будет содержать имя таблицы с данными. Так как мы собираемся хранить информацию о пользователях, назовем нашу таблицу Feedback (обратная связь). Внимание! В MySQL имена таблиц и столб цов являются регистрозависимыми.

  6. Установите связь с сервером.
  7. $Link = mysql_connect ($Host, $User, $Password);
  8. Напишите запрос.
  9. $Query = "CREATE table $TableName (id INT UNSIGNED NOT
    NULL AUTO_INCREMENT PRIMARY KEY, FirstName TEXT, LastName
    TEXT, EmailAddress TEXT, Comments TEXT)";

    Разобьем запрос на части. Сначала создаем новую таблицу, написав CREATE table $TableName (имя переменной $TableName будут заменено значением пе ременной $TableName при выполнении запроса). Затем в скобках перечисляем все столбцы, отделяя их друг от друга запятыми.

    Первый столбец в таблице называется id. Это будет целое число без знака (запись INT UNSIGNED означает, что целое число может быть только положитель ным). Слова NOT NULL указывают, что данный столбец не может иметь пустое значение. При добавлении новой строки (AUTO_INCREMENT) значения автомати чески увеличиваются на единицу и исполняют функцию первичного ключа. Следующие четыре столбца будут текстовыми: первый содержит имя, вто рой фамилию, третий адрес электронной почты, четвертый комментарии.

  10. Обратитесь к базе данных с запросом и напечатайте соответствующее сообщение о результатах его выполнения.
  11. if (mysql_db_query ($DBName, $Query, $Link)) { •
    print ("The query was successfully executed!<BR>n");
    } else {
    print ("The query could not be executed!<BR>n");
    }

    Если запрос выполнен успешно (значение условной конструкции истинно), вы увидите сообщение (рис. 11.4). Если таблица не была создана в результате ошибки в SQL, результат будет подобен тому, что представлен на рис. 11.5. Когда же таблица не была создана изза отсутствия определенных прав досту па, появится сообщение, как на рис. 11.3.

  12. Закройте соединение с системой MySQL, закройте PHPраздел и HTML.
  13. mysql_close ($Link);
    ?></BODYx/HTML>
  14. Сохраните сценарий как CreateTable.php (листинг 11.2), загрузите его на сервер и протестируйте в браузере.
  15. Листинг 11.2 т Создание таблицы и большинства других запросов к базе данных обеспечивается написанием соответствующего запроса и использова нием функции mysql_db_query().

    1 <HTML>
    2 <HEAD>
    3 <TITLE>Creating a Table</TITLEx/HEAD>
    4 <BODY>
    5 <?php
    6 II Установка значений переменных для доступа к базе данных.
    7 $Host = "localhost";
    8 $User = "user";
    9 $Password = "password";
    10 $DBName = "NewDatabase";
    11 $ТаЫеЫашв = "Feedback";
    12
    13 $Link = mysql_connect ($Host, $User, $Password) ;
    14 $Query = "CREATE table $TableName (id INT UNSIGNED NOT NOLL
    AOTO_INCREMENT PRIMARY KEY, FiretName TEXT, LastName TEXT,
    EmailAddress TEXT, Comments TEXT)";
    15 if (myaql_db_query ($DBName, $Query, $Link)) {
    16 print ("The query was successfully executed!<BR>n");
    17 } else {
    18 print ("The query could not be executed!<BR>n");
    19 }
    20 mysql_close ($Link);
    21 ?>
    22 </BODY>
    23 </HTML>

    Необязательно писать SQLзапросы, периодически используя заглавные буквы, как в приведенном примере. Но такой стиль помогает легко отличать SQL от имен таблиц и столбцов. Имена таблиц и столбцов являются регистрозависимыми, а SQLкоманды в основном нет.