функции php для работы с mysql

Функции СУБД MySQL

Чтобы работать с функциями, вы должны скомпилировать PHP с поддержкой MySQL.

В PHP 5 поддержка MySQL больше не включена по умолчанию, кроме того в нём отсутствует встроенная библиотека-клиент. Подробнее о причине можно прочитать в FAQ.

Таблица 1. Директивы конфигурации MySQL

ИмяЗначение по умолчаниюОбласть изменения
mysql.allow_persistent«On»PHP_INI_SYSTEM
mysql.max_persistent«-1»PHP_INI_SYSTEM
mysql.max_links«-1»PHP_INI_SYSTEM
mysql.default_portNULLPHP_INI_ALL
mysql.default_socketNULLPHP_INI_ALL
mysql.default_hostNULLPHP_INI_ALL
mysql.default_userNULLPHP_INI_ALL
mysql.default_passwordNULLPHP_INI_ALL
mysql.connect_timeout«0»PHP_INI_SYSTEM

Краткое разъяснение конфигурационных директив.

Позволять ли постоянные соединения с MySQL.

Максимальное количество постоянных соединений на один процесс.

Максимальное количество соединений с MySQL на один процесс, включая постоянные соединения.

Тип сокета, используемого для соединения с локальной базой данных, если не был указан другой.

Время ожидания овета до разрыва соединения в секундах. Linux также использует это значение при ожидании первого ответа от сервера.

Модуль MySQL исползует два дополнительных типа указателей. Первый является указателем на соединение с базой данных, второй указывает на ресурс, содержащий результат запроса.

Перечисленные ниже константы определены данным расширением и могут быть доступны только в том случае, если PHP был собран с поддержкой этого расширения или же в том случае, если данное расширение подгружается во время выполнения.

Таблица 2. MySQL константы

константаописание
MYSQL_CLIENT_COMPRESSиспользовать протокол сжатия
MYSQL_CLIENT_IGNORE_SPACEПозволяет вставлять пробелы после имён функций
MYSQL_CLIENT_INTERACTIVEЖдать interactive_timeout секунд (виесто wait_timeout) бездействия, до закрытия соединения.

Таблица 3. Константы выборки MySQL

константаописание
MYSQL_ASSOCРезультат возвращается в ассоциативном массиве с индексами под именами колонок.
MYSQL_BOTHРезультат возвращается в массиве, содержащем как численные индексы, так и индексы под именами колонок.
MYSQL_NUMРезультат возвращается в массиве, содержащем численные индексы. Индексы стартуют с 0 (0 содержит первую колонку).

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

Пример 1. Пример работы с MySQL

Источник

Статьи

Функции PHP для работы с MySQL

Рассмотрим основные функции PHP, применяемые для работы с MySQL сервером.

Функции соединения с сервером MySQL

Функция возвращает идентификатор (типа int ) соединения, вся дальнейщая работа осуществляется только через этот идентификатор. При следующем вызове функции mysql_connect() с теми же параметрами новое соединение не будет открыто, а функция возвратит идентификатор существующего соединения.

Вообще, соединение можно и не закрывать — оно будет закрыто автоматически при завершении работы PHP скрипта. Если вы используете более одного соединения, при вызове mysql_close() нужно указать идентификатор соединения, которое вы хотите закрыть. Вообще не закрывать соединения — плохой стиль, лучше закрывать соединения с MySQL самостоятельно, а не надеясь на автоматизм PHP, хотя это ваше право.

Если вы будете использовать только одно соединение с базой данных MySQL за все время работы сценария, можно не сохранять его идентификатор и не указывать идентификатор при вызове остальных функций.

PHP работает с постоянными соединениями примерно так: при вызове функции mysql_pconnect() PHP проверяет, было ли ранее установлено соединение. Если да, то возвращается его идентификатор, а если нет, то открывается новое соединение и возвращается идентификатор.

Постоянные соединения позволяют значительно снизить нагрузку на сервер, а также повысить скорость работы PHP скриптов, использующих базы данных.

Функция выбора базы данных

Функции обработки ошибок

Если произойдет ошибка соединения с MySQL, то вы получите соответствующее сообщение и скрипт завершит свою работу. Это не всегда бывает удобно, прежде всего, при отладке скриптов. Поэтому, в PHP есть следующие две функции:

Первая функция возвращает номер ошибки, а вторая — сообщение об ошибке. В результате мы можем использовать следующее:

Теперь вы будете знать, из-за чего произошла ошибка — вы увидите соответствующим образом оформленное сообщение.

Функции выполнения запросов к серверу баз данных

Функции обработки результатов запроса

Если запрос, выполненный с помощью функции mysql_query() успешно выполнился, то в результате клиент получит набор записей, который может быть обработан следующими функциями PHP:

Также можно определить количество содержащихся записей и полей в результате запроса. Функция mysql_num_rows() позволяет узнать, сколько записей содержит результат запроса:

Запись состоит из полей (колонок). С помощью функции mysql_num_fields() можно узнать, сколько полей содержит каждая запись результата:

У нас также есть возможность узнать значение каждого поля. Это можно сделать с помощью следующей функции:

Предположим, SQL-запрос вернул следующий набор данных:

Вывести это в браузер можно следующим образом:

В PHP есть функция, возвращающая ассоциативный массив с одним индексом:

Пример использования функции mysql_fecth_array() :

Функции получения информации о результатах SQL-запросов

PHP предоставляет еще несколько полезных функций, которые позволяют узнать информацию о результах SQL-запросов.

Функция mysql_field_flags() возвращает флаги в виде строки, в которой флаги разделяются пробелами.

Практический пример использования функций PHP-MySQL

Скрипт вывода содержимого таблицы MySQL в виде HTML:

= «localhost» ;
$user = «user» ;
$password = «qwerty» ;

К сожалению, не доступен сервер MySQL

К сожалению, не доступна база данных

// SQL-запрос:
$res = mysql_query ( «SELECT * FROM mytable» );

Источник

Функции СУБД MySQL

Примечания

Содержание

User Contributed Notes 38 notes

@Amanda 12-Oct-2007 09:58

I almost had to ask myself if this was a real question. If the MySQL server rejects the connection attempt then, yes, MySQL would be able to send back an error to PHP. And if PHP can’t access the target MySQL server at all then it is also smart enough to issue the appropriate error all by itself.

A note on resources

After finally getting IIS, PHP, and MySQL on a new Windows XP machine, I decided to write the steps I took so you can see how it was done: http://www.atksolutions.com/articles/install_php_mysql_iis.html

Here a mysql helper containing the main functions of the mysql extension. It’s easy to understand for a beginner and quite useful because queries are secure. It understands what you want, just write your sql query. I called it mysql_magic.

$query = «SELECT username FROM users WHERE username REGEXP ‘$username[0-9*]'»;

You should use this instead:

$query = «SELECT username FROM users WHERE username REGEXP ‘$[0-9*]'»;

/*
MySQL (Community) Server Installation on 32-bit Windows XP running Apache

On Windows, the recommended way to run MySQL is to install it as a Windows service, whereby MySQL starts and stops automatically when Windows starts and stops. A MySQL server installed as a service can also be controlled from the command line commands, or with the graphical Services utility like phpMyAdmin.

MySQL is no longer enabled by default, so the php_mysql.dll DLL must be enabled inside of php.ini. Also, PHP needs access to the MySQL client library. A file named libmysql.dll is included in the Windows PHP distribution and in order for PHP to talk to MySQL this file needs to be available to the Windows systems PATH.

Following PHP Script is useful to test PHP connection with MySQL.
*/

For Windows users, please note:

If apache is installed as a service, and you change PATH variable so it can reach libmysql.dll, you will need to reboot your machine in order to have changes applied.

This may not be watertight if the «;\n» sequence appears inside queries, but I hope it helps others who are in posession of such dumps.

If you want to get PHP working nicely with MySQL, even with Apache, under Windows based systems, try XAMPP, from Apache Friends. It saves messing about with config files, which is the only major problem with trying to get the three to work together under windows.

Источник

Работа с MySQL в PHP

PHP поддерживает работу с базой данных MySQL.
Специальные встроенные функции для работы с MySQL позволяют просто и эффективно работать с этой СУБД: выполнять любые запросы, читать и записывать данные, обрабатывать ошибки.
Сценарий, который подключается к БД, выполняет запрос и показывает результат, будет состоять всего из нескольких строк. Для работы с MySQL не надо ничего дополнительно устанавливать и настраивать; всё необходимое уже доступно вместе со стандартной поставкой PHP.

Что такое mysqli?

mysqli (MySQL Improved) — это расширение PHP, которое добавляет в язык полную поддержку баз данных MySQL. Это расширение поддерживает множество возможностей современных версий MySQL.

Как выглядит работа с базой данных

Типичный процесс работы с СУБД в PHP-сценарии состоит из нескольких шагов:

Функция mysqli connect: соединение с MySQL

Но чтобы выполнить соединение с сервером, необходимо знать как минимум три параметра:

Базовый синтаксис функции mysqli_connect() :

Проверка соединения

Первое, что нужно сделать после соединения с СУБД — это выполнить проверку, что оно было успешным.
Эта проверка нужна, чтобы исключить ошибку при подключении к БД. Неверные параметры подключения, неправильная настройка или высокая нагрузка заставит MySQL отвеграть новые подключения. Все эти ситуации приведут к невозможности соединения, поэтому программист должен проверить успешность подключения к серверу, прежде чем выполнять следующие действия.

Соединение с MySQL и проверка на ошибки:

Функция mysqli_connect_error() просто возвращает текстовое описание последней ошибки MySQL.

Установка кодировки

Первым делом после установки соединения крайне желательно явно задать кодировку, которая будет использоваться при обмене данными с MySQL. Если этого не сделать, то вместо записей со значениями, написанными кириллицей, можно получить последовательность из знаков вопроса: ‘. ’.
Вызови эту функцию сразу после успешной установки соединения: mysqli_set_charset($con, «utf8»);

Выполнение запросов

Установив соединение и определив кодировку мы готовы выполнить свои первые SQL-запросы. Вы уже умеете составлять корректные SQL команды и выполнять их через консольный или визуальный интерфейс MySQL-клиента.
Те же самые запросы можно отправлять без изменений и из PHP-сценария. Помогут в этом несколько встроенных функций языка.

Два вида запросов

Следует разделять все SQL-запросы на две группы:

При выполнении запросов из среды PHP, запросы из второй группы возвращают только результат их исполнения: успех или ошибку.
Запросы первой группы при успешном выполнении возвращают специальный ресурс результата. Его, в свою очередь, можно преобразовать в ассоциативный массив (если нужна одна запись) или в двумерный массив (если требуется список записей).

Добавление записи

Вернёмся к нашему проекту — дневнику наблюдений за погодой. Начнём практическую работу с заполнения таблиц данными. Для начала добавим хотя бы один город в таблицу cities.

Выражение INSERT INTO используется для добавления новых записей в таблицу базы данных.

Функция insert id: как получить идентификатор добавленной записи

Теперь у нас есть всё необходимое, чтобы добавить погодную запись.
Вот как будет выглядеть комплексный пример с подключением к MySQL и добавлением двух новых записей:

Чтение записей

В этом примере показано, как вывести все существующие города из таблицы cities:

Чтобы получить действительные данные, то есть записи из таблицы, следует использовать другую функцию — mysqli_fetch_array() — и передать ей единственным параметром эту самую ссылку.
Теперь каждый вызов функции mysqli_fetch_array() будет возвращать следующую запись из всего результирующего набора записей в виде ассоциативного массива.

Цикл while здесь используется для «прохода» по всем записям из полученного набора записей.
Значение поля каждой записи можно узнать просто обратившись по ключу этого ассоциативного массива.

Как получить сразу все записи в виде двумерного массива

Иногда бывает удобно после запроса на чтение не вызывать в цикле mysqli_fetch_array для извлечения очередной записи по порядку, а получить их сразу все одним вызовом. PHP так тоже умеет. Функция mysqli_fetch_all($res, MYSQLI_ASSOC) вернёт двумерный массив со всеми записями из результата последнего запроса.
Перепишем пример с показом существующих городов с её использованием:

Как узнать количество записей

Источник

Функции php для работы с mysql

Рассмотрим основные функции PHP, применяемые для работы с MySQL сервером.

Функции соединения с сервером MySQL

Основной функцией для соединения с сервером MySQL является mysql_connect(), которая подключает скрипт к серверу баз данных MySQL и выполяет авторизацию пользователя базой данных. Синтаксис у данной функции такой:

Функция возвращает идентификатор (типа int) соединения, вся дальнейщая работа осуществляется только через этот идентификатор. При следующем вызове функции mysql_connect() с теми же параметрами новое соединение не будет открыто, а функция возвратит идентификатор существующего соединения.

Если вы будете использовать только одно соединение с базой данных MySQL за все время работы сценария, можно не сохранять его идентификатор и не указывать идентификатор при вызове остальных функций.

В чем разница между постоянным соединением и обыкновенным соединением с MySQL? Постоянное соединение не закрывается после завершения работы скрипта, даже если скрипт вызвал функцию mysql_close(). Соединение привязывается к PID потомка веб сервера Apache (от имени которого он и работает) и закрывается лишь тогда, когда удаляется процесс-владелец (например, при завершении работы или перезагрузке веб-сервера Apache).

PHP работает с постоянными соединениями примерно так: при вызове функции mysql_pconnect() PHP проверяет, было ли ранее установлено соединение. Если да, то возвращается его идентификатор, а если нет, то открывается новое соединение и возвращается идентификатор.

Постоянные соединения позволяют значительно снизить нагрузку на сервер, а также повысить скорость работы PHP скриптов, использующих базы данных.

Функция выбора базы данных

Функции обработки ошибок

Если произойдет ошибка соединения с MySQL, то вы получите соответствующее сообщение и скрипт завершит свою работу. Это не всегда бывает удобно, прежде всего, при отладке скриптов. Поэтому, в PHP есть следующие две функции:

echo «ERROR «.mysql_errno().» «.mysql_error().»\n»;

Функции выполнения запросов к серверу баз данных

$q = mysql_query(«SELECT * FROM mytable»);

Функции обработки результатов запроса

Если запрос, выполненный с помощью функции mysql_query() успешно выполнился, то в результате клиент получит набор записей, который может быть обработан следующими функциями PHP:

Также можно определить количество содержащихся записей и полей в результате запроса. Функция mysql_num_rows() позволяет узнать, сколько записей содержит результат запроса:

$q = mysql_query(«SELECT * FROM mytable»);
echo «В таблице mytable «.mysql_num_rows($q).» записей»;

Запись состоит из полей (колонок). С помощью функции mysql_num_fields() можно узнать, сколько полей содержит каждая запись результата:

$q = mysql_query(«SELECT * FROM mytable»);
echo «В таблице mytable «.mysql_num_fields($q).» полей «;

У нас также есть возможность узнать значение каждого поля. Это можно сделать с помощью следующей функции:

Предположим, SQL-запрос вернул следующий набор данных:

Email Name Last_Name
————————————
ivanov@mail.ru Ivan Ivanov
petrov@mail.ru Petr Petrov

Вывести это в браузер можно следующим образом:

$rows = mysql_num_rows($q);
$fields = mysql_num_fields($q);

Следует отметить, что функция mysql_result() универсальна: зная количество записей и количество полей, можно «обойти» весь результат, но в тоже время, скорость работы данной функции достаточно низка. Поэтому, для обработки больших наборов записей рекомендуется использовать функции mysql_fecth_row(), mysql_fecth_array(), и.т.д.

Использовать функцию mysql_fecth_row() не всегда удобно, так как значения всех полей одной записи находятся все в одной строке. Удобнее использовать функцию mysql_fetch_array(), которая возвращает ассоциативный массив, ключами которого будут имена полей.

В PHP есть функция, возвращающая ассоциативный массив с одним индексом:

Фактически, данная функция является синонимом для mysql_fetch_array($res, MYSQL_ASSOC);

Пример использования функции mysql_fecth_array():

Как видно, использовать функцию mysql_fetch_array() намного удобнее, чем mysql_fetch_row().

Функции получения информации о результатах SQL-запросов

PHP предоставляет еще несколько полезных функций, которые позволяют узнать информацию о результах SQL-запросов.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *