Московский Государственный Технический Университет

имени Н.Э.Баумана

Кафедра САПР


PHP и СУБД mySQL

Федорук В.Г.

Для разработки web-приложений, оперирующих большими объемами данных, наибольшую популярность получила "связка" языка PHP и СУБД mySQL (http://www.mysql.com). Введение в язык SQL применительно к СУБД mySQL дано в учебном пособии "Основы языка SQL". Ниже дан пример простой PHP-программы, генерирующей HTML-таблицу из содержимого SQL-таблицы СУБД mySQL.

<?php
    /* Установление соединения с СУБД mySQL, функционирующей на узле mysql_host */
    $link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
        or die("Could not connect : " . mysql_error());
    print "Connected successfully";
    /* Выбор БД my_database */
    mysql_select_db("my_database") or die("Could not select database");

    /* Выполнение SQL-запроса */
    $query = "SELECT * FROM my_table";
    $result = mysql_query($query) or die("Query failed : " . mysql_error());

    /* Формирование HTML-таблицы */
    print "<table>\n";
    /* Цикл чтения строк SQL-таблицы в ассоциативный массив */
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
        print "\t<tr>\n";
	/* Цикл по всем элементам ассоциативного массива */
        foreach ($line as $col_value) {
            print "\t\t<td>$col_value</td>\n";
        }
        print "\t</tr>\n";
    }
    print "</table>\n";

    /* Освобождение памяти, занятой результатами выполнения запроса */
    mysql_free_result($result);

    /* Закрытие соединения с СУБД mySQL */
    mysql_close($link);
?>
Далее кратко описаны функции PHP, наиболее часто используемые при работе с СУБД mySQL.

resource mysql_connect ([string server [, string username [, string password]]])
устанавливает соединение с СУБД mySQL, функционирующей на узле server, используя имя пользователя username с паролем password. Умолчательным значением пароля служит пустая строка "". При отсутствии аргумента username используется имя владельца процесса web-сервера. Значением "по умолчанию" аргумента server является "localhost:3306". Соединение с СУБД будет закрыто автоматически при завершении выполнения программы, если до этого оно не было закрыто явно с помощью функции mysql_close().

bool mysql_close (resource link_identifier)
закрывает ранее открытое соединение с СУБД mySQL с идентификатором link_identifier.

bool mysql_select_db (string database_name, resource link_identifier)
устанавливает в качестве "текущей" для последующих SQL-запросов БД с именем database_name, используя соединение с идентификатором link_identifier.

resource mysql_query (string query, resource link_identifier)
посылает запрос query к "текущей" БД, используя соединение с идентификатором link_identifier. Для запросов SELECT, SHOW, EXPLAIN и DESCRIBE возвращается указатель на результат запроса или FALSE, если запрос не выполнен. Во всех остальных случаях функция mysql_query() возвращает TRUE или FALSE. Текст запроса не должен заканчиваться символом";".

bool mysql_free_result (resource result)
освобождает память, занимаемую результатом result ранее выданного запроса. Если до момента окончания программы для какого-то результата не была вызвана функция mysql_free_result(), память освобождается автоматически.

int mysql_num_rows (resource result)
возвращает количество строк в результате result, полученном после выполнения запроса SELECT.

int mysql_affected_rows (resource link_identifier)
возвращает количество строк, затронутых последним запросом INSERT, UPDATE или DELETE, выполненным по соединению с идентификатором link_identifier.

array mysql_fetch_row (resource result)
возвращает индексируемый массив, содержащий в качестве элементов значения (типа string) столбцов очередной строки запроса SELECT, результат которого размещен в памяти, указываемой result. Целочисленный ключ первого элемента в массиве равен 0. При достижении конца списка строк-результатов функция mysql_fetch_row() возвращает FALSE.

array mysql_fetch_assoc (resource result)
возвращает ассоциативный массив, содержащий в качестве элементов значения (типа string) столбцов очередной строки запроса SELECT, результат которого размещен в памяти, указываемой result. Строковые ключи элементов массива совпадают с именами извлеченных столбцов таблиц части FROM SQL-оператора SELECT (для избежания неоднозначностей рекомендуется использовать синонимомизацию посредством AS). При достижении конца списка строк-результатов функция mysql_fetch_assoc() возвращает FALSE.

array mysql_fetch_array (resource result [, int result_type])
возвращает массив, содержащий в качестве элементов значения (типа string) столбцов очередной строки запроса SELECT, результат которого размещен в памяти, указываемой result. Способ индексирования массива задается аргументом result_type: константа MYSQL_NUM заставляет PHP создать целочисленные ключи, константа MYSQL_ASSOC - строковые ключи, а MYSQL_BOTH - те и другие. Умолчательное значение - MYSQL_BOTH. При достижении конца списка строк-результатов функция mysql_fetch_array() возвращает FALSE.

int mysql_errno (resource link_identifier)
возвращает код ошибки последней выполненной функции обращения к СУБД mySQL (0 в случае удачного завершения).

string mysql_error (resource link_identifier)
возвращает текст описания ошибки последней выполненной функции обращения к СУБД mySQL (пустую строку "" в случае удачного завершения).