PHP PDO
Вступление
Благодаря своей простоте и простоте использования, PHP является широко используемым универсальным языком сценариев с открытым исходным кодом. PHP используется для быстрого создания интерактивных и динамических веб-страниц и может получить доступ к широкому спектру систем управления реляционными базами данных, таким как MySQL, PostgreSQL и SQLite. Многие из нас уже получают доступ к базам данных MySQL, используя расширения MySQL или MySQLi. Начиная с версии 5.1, PHP предоставляет новую библиотеку абстракций подключения к базе данных, PHP Data Objects (PDO).
Содержание:
Что такое PDO?
- PDO - объект данных PHP.
- Набор расширений PHP, которые предоставляют базовый класс PDO и драйверы для конкретных баз данных.
- Предоставляет независимый от производителя легкий уровень абстракции доступа к данным.
- Сосредоточьтесь на абстракции доступа к данным, а не на базе данных.
- PDO требует новых объектно-ориентированных функций в ядре PHP 5, поэтому он не будет работать с более ранними версиями PHP.
Установка PDO
ЗОП делится на две составляющие:
- Ядро, которое обеспечивает интерфейс.
- Драйверы для доступа к конкретному водителю.
Установка PDO в системах Unix:
- PDO (Core) и драйвер PDO_SQLITE (драйвер SQLITE) включены по умолчанию в PHP 5.1.0. Для доступа к другим базам данных вы должны включить драйвер PDO.
- Чтобы установить PDO как общий модуль, необходимо обновить php.ini, чтобы расширение PDO автоматически загружалось при запуске PHP. Вам также необходимо включить другие драйверы, специфичные для базы данных, и они должны быть перечислены после строки pdo.so, поскольку PDO должен быть инициализирован перед загрузкой расширений, специфичных для базы данных. Если вы построили PDO и расширения для базы данных статически, вы можете пропустить этот шаг:
расширение = pdo.so
Установка PDO в системах Windows:
- PDO и все основные драйверы поставляются с PHP как общие расширения, и их просто нужно активировать, отредактировав файл php.ini:
расширение = php_pdo.dll.
Этот шаг не является обязательным для PHP 5.3 и выше, так как DLL больше не требуется для PDO.
- Затем выберите другие специфичные для базы данных DLL-файлы и либо используйте dl () для их загрузки во время выполнения, либо включите их в php.ini ниже php_pdo.dll.
Чтобы получить эффект новой конфигурации в файле php.ini, вам нужно будет перезапустить PHP.
Предопределенные константы
Поддерживаемая база данных
Интерфейс PDO доступен в следующих драйверах:
Имя базы данных | Имя водителя |
---|---|
CUBRID | PDO_CUBRID |
FreeTDS / Microsoft SQL Server / Sybase | PDO_DBLIB |
Firebird / Interbase 6 | PDO_FIREBIRD |
IBM DB2 | Pdo_Ibm |
IBM Informix Dynamic Server | PDO_INFORMIX |
MySQL 3.x / 4.x / 5.x | PDO_MYSQL |
Интерфейс вызова Oracle | pdo_Oci |
ODBC v3 (IBM DB2, unixODBC и win32 ODBC) | PDO_ODBC |
PostgreSQL | pdo_Pgsql |
SQLite 3 и SQLite 2 | Pdo_Sqlite |
Microsoft SQL Server / SQL Azure | PDO_SQLSRV |
4D | PDO_4D |
Пример базы данных, таблица, структура таблицы, записи таблицы для различных примеров
MySQL:
Название базы данных: час
Имя хоста: localhost
Пользователь базы данных: root
Пароль: ' '
Структура таблицы: user_details
Записи таблицы: user_details
PostgreSQL:
База данных Имя: postgres
Имя хоста: localhost
Пользователь базы данных: postgres
Пароль: abc123
Структура таблицы: user_details
Записи таблицы: user_details
Класс ПДО
Класс представляет собой соединение между PHP и сервером базы данных.
Синтаксис:
PDO { __construct (строка $ dsn [, строка $ username [, строка $ password [, массив $ driver_options]]]) bool beginTransaction (void) bool commit (void) смешанный код ошибки (void) массив errorInfo (void) int exec (строка $ оператор) смешанный getAttribute (int $ attribute) статический массив getAvailableDrivers (void) bool inTransaction (void) string lastInsertId ([string $ name = NULL]) PDOStatement prepare (строка $ Statement [, массив $ driver_options = array ()]) Запрос PDOStatement (строка $ Statement) строковая кавычка (строка $ string [, int $ parameter_type = PDO :: PARAM_STR]) bool rollBack (void) bool setAttribute (int $ attribute, mixed $ value)} mp ($ var_name); }
Детали методов класса PDO:
PDO :: __ конструкт
Создает экземпляр PDO, представляющий соединение с базой данных.
Синтаксис:
PDO :: __ construct () (строка $ dsn [, строка $ username [, строка $ password [, массив $ driver_options]]])
Параметры:
dsn - имя источника данных, или DSN, содержит информацию, необходимую для подключения к базе данных. Строка содержит имя префикса (например, pgsql для базы данных PostgreSQL), двоеточие и ключевое слово сервера.
username - строка, содержащая имя пользователя. Этот параметр является необязательным для некоторых драйверов PDO.
пароль - строка, содержащая пароль пользователя. Этот параметр является необязательным для некоторых драйверов PDO.
driver_options - Необязательно. Ключ => массив значений специфичных для драйвера опций подключения.
Возвращаемое значение:
Возвращает объект PDO в случае успеха. В случае неудачи возвращает объект PDOException.
Соединения с базой данных
Соединения устанавливаются путем создания экземпляров базового класса PDO. Неважно, какой драйвер вы хотите использовать; Вы всегда используете имя класса PDO. Конструктор принимает параметры для указания источника базы данных (известный как DSN) и, опционально, для имени пользователя и пароля (если есть).
MySQL соединение
<?php
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
?>
PostgreSQL соединение
<?php
$dbuser ='postgres';
$dbpass ='abc123';
$host ='localhost';
$dbname='postgres';
$dbh = new PDO("pgsql:host=$host;dbname=$dbname", $dbuser, $dbpass);
?>
Обработка ошибок подключения
Если есть какие-либо ошибки соединения, объект PDOException будет брошен. Вы можете перехватить исключение, если хотите обработать условие ошибки, или оставить его глобальному обработчику исключений, который можно настроить с помощью set_exception_handler ().
MySQL:
Здесь идентификатор пользователя неверен.
<?php
try {
$dbhost ='localhost';
$dbuser ='roott';
$dbpass = '';
$dbh = new PDO('mysql:host=$dbhost;dbname=hr', $dbuser, $dbpass);
}catch (PDOException $e){
echo "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>
Выход:
Ошибка: SQLSTATE [28000] [1045] Доступ запрещен для пользователя 'roott' @ 'localhost' (с использованием пароля: НЕТ)
PostgreSQL:
Здесь имя базы данных неверно.
<?php
$dbuser ='postgress';
$dbpass ='abc123';
$host ='localhost';
$dbname='postgres';
$dbh = new PDO("pgsql:host=$host;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e){
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
?>
Выход:
Ошибка: SQLSTATE [08006] [7] не удалось подключиться к серверу: соединение отклонено (0x0000274D / 10061) Сервер работает на хосте «localhost» (:: 1) и принимает соединения TCP / IP через порт 5432? FATAL: аутентификация по паролю не удалась для пользователя "postgress"
Закрытие соединения
<?php>
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
// use the connection here
// Following command close the connection.
$dbh = null;
?>
Постоянные связи
Многие веб-приложения выиграют от создания постоянных соединений с серверами баз данных. Постоянные соединения не закрываются в конце сценария, но кэшируются и используются повторно, когда другой сценарий запрашивает подключение с использованием тех же учетных данных. Постоянный кэш подключений позволяет избежать накладных расходов на установление нового подключения каждый раз, когда сценарию требуется связаться с базой данных, что приводит к более быстрому веб-приложению.
MySQL:
<?php
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass, array(
PDO::ATTR_PERSISTENT => true));
?>
PostgreSQL:
<?php
$dbuser ='postgres';
$dbpass ='abc123';
$host ='localhost';
$dbname='postgres';
$dbh = new PDO("pgsql:host=$host;dbname=$dbname", $dbuser, $dbpass, array(
PDO::ATTR_PERSISTENT => true));
?>
PDO :: BeginTransaction
Отключает режим автоматической фиксации и начинает транзакцию. Транзакция начинается с PDO :: beginTransaction и заканчивается при вызове PDO :: commit или PDO :: rollback .
Синтаксис:
bool PDO :: beginTransaction (void)
Возвращаемое значение:
Возвращает TRUE в случае успеха или FALSE в случае неудачи.
Пример:
В следующем примере используется база данных MySQL с именем hr и таблица с именем user_details. Он запускает транзакцию, а затем выполняет команду для добавления одной строки в таблицу user_details. Команда отправляется в базу данных, и транзакция явно завершается с помощью PDO :: commit.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e) {
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$connec->beginTransaction();
$result = $connec->exec("INSERT INTO user_details (userid, password, fname, lname, gender, dtob, country, user_rating, emailid) VALUES
('abcd123', '[email protected]', 'John', 'ray', 'M', '1992-06-11', 'USA', '130', '[email protected]')");
$connec->commit();
echo $result;
?>
PDO :: совершить
Передает транзакцию, возвращая соединение с базой данных в режим автоматической фиксации, пока следующий вызов PDO :: beginTransaction () не начнет новую транзакцию.
Синтаксис:
bool PDO :: commit (void)
Возвращаемое значение:
Возвращает TRUE в случае успеха или FALSE в случае неудачи.
Пример:
Смотрите предыдущий пример (PDO :: beginTransaction).
PDO :: ERRORCODE
PDO :: errorCode извлекает SQLSTATE (значение класса из двух символов, за которым следует значение подкласса из трех символов), связанное с последней операцией над дескриптором базы данных.
Синтаксис:
смешанный PDO :: errorCode ();
Возвращаемое значение:
Возвращает пятизначный SQLSTATE в виде строки или NULL, если не было операции над дескриптором оператора.
Пример:
В этом примере имя столбца написано с ошибкой (пол вместо гендера), что приводит к ошибке. errorCode () отображает ошибку.
<?php
try{
$dbuser ='postgres';
$dbpass ='abc123';
$host ='localhost';
$dbname='postgres';
$connec = new PDO("pgsql:host=$host;dbname=$dbname", $dbuser, $dbpass);
}
catch (PDOException $e)
{
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$query = "SELECT * FROM user_details where genderr='M'";
$connec->query($query);
echo $connec->errorCode();
?>
Выход:
42S22
PDO :: errorInfo
Получает расширенную информацию об ошибках, связанных с последней операцией над дескриптором базы данных.
Синтаксис:
массив PDO :: errorInfo ();
Возвращаемое значение:
Массив информации об ошибке о последней операции, выполненной этим дескриптором базы данных. Массив состоит из следующих полей:
0: код ошибки SQLSTATE.
1: специфичный для драйвера код ошибки.
2: специфичное для драйвера сообщение об ошибке.
Пример:
В следующем примере (используется база данных PostgreSQL) имя столбца написано с ошибкой (пол вместо гендера), что приводит к ошибке, о которой затем сообщается.
<?php
try{
$dbuser ='postgres';
$dbpass ='abc123';
$host ='localhost';
$dbname='postgres';
$connec = new PDO("pgsql:host=$host;dbname=$dbname", $dbuser, $dbpass);
}
catch (PDOException $e)
{
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$query = "SELECT * FROM user_details where genderr='M'";
$connec->query($query);
echo $connec->errorCode();
print_r ($connec->errorInfo());
?>
Выход:
42703Array ([0] => 42703 [1] => 7 [2] => ОШИБКА: столбец «гендер» не существует ЛИНИЯ 1: ВЫБРАТЬ * ИЗ user_details, где гендер = «М» ^)
PDO :: Exec
Выполните оператор SQL и верните количество строк, затронутых оператором.
Синтаксис:
int PDO :: exec ($ оператор)
Параметры:
Statement - оператор SQL для подготовки и выполнения.
Возвращаемое значение:
Целое число, сообщающее о количестве затронутых строк. Если ни одна строка не была затронута, PDO :: exec () возвращает 0.
Пример:
В следующем примере (используется база данных PostgreSQL) имя столбца написано с ошибкой (пол вместо гендера), что приводит к ошибке, о которой затем сообщается.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e) {
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
/* Delete some rows from the allcountry table */
$count = $connec->exec("DELETE FROM allcountry WHERE country_id ='AR'");
/* Return number of rows */
echo("Number of deleted rows in allcountry table : ". $count);
?>
Выход:
Количество удаленных строк в таблице по всей стране: 1
PDO :: GetAttribute
Получает значение предварительно определенного атрибута PDO или драйвера.
Синтаксис:
смешанный PDO :: getAttribute ($ attribute)
Параметры:
Одна из констант PDO :: ATTR_ *. Константы, которые применяются к соединениям с базой данных:
PDO :: ATTR_AUTOCOMMIT
PDO :: ATTR_CASE
PDO :: ATTR_CLIENT_VERSION
PDO :: ATTR_CONNECTION_STATUS
PDO :: ATTR_DRIVER_NAME
PDO :: ATTR_ERRMODE
PDO :: ATTR_ORACLE_NULLS
PDO :: ATTR_PERSISTENT
PDO :: ATTR_PREFETCH
PDO :: ATTR_SERVER_INFO
PDO :: ATTR_SERVER_VERSION
PDO :: ATTR_TIMEOUT
Возвращаемое значение:
Успешный вызов возвращает значение запрошенного атрибута PDO. При неудаче возвращает ноль.
Пример:
В следующем примере (используется база данных PostgreSQL) получение атрибутов подключения к базе данных.
<?php
try{
$dbuser ='postgres';
$dbpass ='abc123';
$host ='localhost';
$dbname='postgres';
$conn = new PDO("pgsql:host=$host;dbname=$dbname", $dbuser, $dbpass);
}
catch (PDOException $e)
{
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
attributes = array(
"AUTOCOMMIT", "ERRMODE", "CASE", "CLIENT_VERSION", "CONNECTION_STATUS",
"ORACLE_NULLS", "PERSISTENT", "PREFETCH", "SERVER_INFO", "SERVER_VERSION",
"TIMEOUT"
);
foreach ($attributes as $val)
{
echo "PDO::ATTR_$val: ";
echo $conn->getAttribute(constant("PDO::ATTR_$val")) . "<br>";
}
?>
Выход:
PDO :: ATTR_AUTOCOMMIT: PDO :: ATTR_ERRMODE: 0 PDO :: ATTR_CASE: 0 PDO :: ATTR_CLIENT_VERSION: 8.3.6 PDO :: ATTR_CONNECTION_STATUS: соединение в порядке; жду отправки. PDO :: ATTR_ORACLE_NULLS: 0 PDO :: ATTR_PERSISTENT: PDO :: ATTR_PREFETCH: PDO :: ATTR_SERVER_INFO: PID: 5940; Кодировка клиента: UTF8; Суперпользователь: включен; Авторизация сессии: postgres; Дата Стиль: ISO, MDY PDO :: ATTR_SERVER_VERSION: 9.1.3 PDO :: ATTR_TIMEOUT:
PDO :: getAvailableDrivers
Верните массив доступных драйверов PDO в вашей установке PHP.
Синтаксис:
массив PDO :: getAvailableDrivers ();
Возвращаемое значение:
Массив со списком драйверов PDO.
Пример:
В следующем примере возвращается массив доступных имен драйверов PDO.
<?php
print_r(PDO::getAvailableDrivers());
?>
Выход:
Array ([0] => mysql [1] => sqlite)
PDO :: inTransaction
Проверяет, активна ли в данный момент транзакция в драйвере. Этот метод работает только для драйверов базы данных, которые поддерживают транзакции.
Синтаксис:
bool PDO :: inTransaction (void)
Возвращаемое значение:
Возвращает TRUE, если транзакция активна, и FALSE, если нет.
PDO :: lastInsertId
Возвращает идентификатор последней вставленной строки или значения последовательности в таблицу в базе данных.
Синтаксис:
строка PDO :: lastInsertId ([строка $ name = NULL])
Возвращаемое значение:
Если имя последовательности не было указано для параметра name, PDO :: lastInsertId () возвращает строку, представляющую идентификатор строки последней строки, которая была вставлена в базу данных.
Если для параметра имени было указано имя последовательности, PDO :: lastInsertId () возвращает строку, представляющую последнее значение, полученное из указанного объекта последовательности.
Если драйвер PDO не поддерживает эту возможность, PDO :: lastInsertId () запускает IM001 SQLSTATE.
Пример:
В следующем примере (используется база данных PostgreSQL) возвращается идентификатор последней вставленной строки или значения последовательности.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e) {
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$result = $connec->exec("INSERT INTO user_details (userid, password, fname, lname, gender, dtob, country, user_rating, emailid) VALUES
('abcd123', '[email protected]', 'John', 'ray', 'M', '1992-06-11', 'USA', '130', '[email protected]')");
$lastRow = $connec->lastInsertId('user_details');
echo $lastRow ;
?>
PDO :: подготовить
Готовит выписку к исполнению.
Синтаксис:
PDO :: prepare (строка $ Statement [, массив $ driver_options = array ()])
Параметры:
оператор : строка содержит допустимый оператор SQL.
driver_options : массив, содержащий имя и значение атрибута (ключ => пары значений).
Возвращаемое значение:
Возвращает объект PDOStatement в случае успеха. При неудаче возвращает объект PDOException или false в зависимости от значения PDO :: ATTR_ERRMODE.
Пример - 1:
В следующем примере готовится инструкция SQL с именованными параметрами.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e) {
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
/* Execute a prepared statement by passing an array of values */
$sql ='SELECT fname, lname, country FROM user_details
WHERE country = :country';
$sth = $connec->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':country' => 'Germany'));
$c = $sth->fetchAll();
print_r($c);
?>
Выход:
Массив ([0] => Массив ([fname] => Диана [0] => Диана [lname] => Лоренц [1] => Лоренц [страна] => Германия [2] => Германия))
Пример - 2:
В следующем примере готовится инструкция SQL с параметрами вопросительного знака.
<?php
try
{
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e) {
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$sql = $connec->prepare('SELECT fname, lname, country FROM user_details
WHERE country = ?');
$sql->execute(array('Germany'));
$c = $sql->fetchAll();
print_r($c);
?>
Выход:
Массив ([0] => Массив ([fname] => Диана [0] => Диана [lname] => Лоренц [1] => Лоренц [страна] => Германия [2] => Германия))
PDO :: запрос
Выполняет запрос SQL и возвращает набор результатов в виде объекта PDOStatement.
Синтаксис:
PDOStatement PDO :: запрос (строка $ оператор) PDOStatement PDO :: query (оператор $ string, int $ PDO :: FETCH_COLUMN, int $ colno) PDOStatement PDO :: query (оператор $ string, int $ PDO :: FETCH_CLASS, строка $ classname, массив $ ctorargs) PDOStatement PDO :: query (оператор $ string, int $ PDO :: FETCH_INTO, объект $ object)
Параметры:
Statement : оператор SQL для выполнения.
Возвращаемое значение:
PDO :: query () возвращает объект PDOStatement или FALSE при ошибке.
Пример:
В следующем примере PDO :: query () выполняет итерацию по набору строк, возвращенному инструкцией SELECT.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e) {
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$sql ='SELECT fname, lname, country FROM user_details ORDER BY country';
foreach ($connec->query($sql) as $row)
{
print $row['fname'] . " ";
print $row['lname'] . "-->";
print $row['country'] . "<br>";
}
?>
Выход:
Диана Лоренц -> Германия Палаш Гош -> ИНДИЯ Скотт Рэй -> США
PDO :: цитата
Поместите кавычки вокруг входной строки для использования в запросе.
Синтаксис:
строка PDO :: quote (строка $ string [, int $ parameter_type = PDO :: PARAM_STR])
Параметры:
строка - строка для цитирования.
параметр_типа - предоставляет подсказку типа данных для драйверов, которые имеют альтернативные стили цитирования.
Возвращаемое значение:
Строка в кавычках, которая может быть передана в оператор SQL, или false в случае сбоя.
Пример:
Следующий пример показывает, как заключить в кавычки нормальную строку.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e) {
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$string ='w3resource';
echo "Unquoted string : ". $string . "<br />";
echo "Quoted string : ". $connec->quote($string) . "<br />";
?>
Выход:
Строка без кавычек: w3resource Строка в кавычках: 'w3resource'
PDO :: RollBack
Откатывает текущую транзакцию, инициированную PDO :: beginTransaction (). Возникнет исключение PDO, если транзакция не активна.
Синтаксис:
bool PDO :: rollBack (пусто)
Возвращаемое значение:
TRUE, если вызов метода завершился успешно, FALSE в противном случае.
Пример:
Следующий пример начинает транзакцию и выдает инструкцию DROP перед откатом изменений. В MySQL оператор DROP TABLE автоматически фиксирует транзакцию, поэтому ничего не будет откатываться.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e) {
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$connec->beginTransaction();
$sth = $connec->exec("DROP TABLE user_detail");
$connec->rollback();
?>
PDO :: SetAttribute
Установите атрибут.
Синтаксис:
bool PDO :: setAttribute (int $ attribute, mixed $ value)
Вот список некоторых доступных общих атрибутов:
- PDO :: ATTR_CASE: принудительная установка имен столбцов в конкретном случае.
- PDO :: CASE_LOWER: переводить имена столбцов в нижний регистр.
- PDO :: CASE_NATURAL: оставить имена столбцов, возвращаемые драйвером базы данных.
- PDO :: CASE_UPPER: переводить имена столбцов в верхний регистр.
- PDO :: ATTR_ERRMODE: Сообщение об ошибке.
- PDO :: ERRMODE_SILENT: просто установите коды ошибок.
- PDO :: ERRMODE_WARNING: повысить E_WARNING.
- PDO :: ERRMODE_EXCEPTION: генерировать исключения.
- PDO :: ATTR_ORACLE_NULLS (доступно со всеми драйверами, не только Oracle): преобразование NULL и пустых строк.
- PDO :: NULL_NATURAL: нет преобразования.
- PDO :: NULL_EMPTY_STRING: пустая строка преобразуется в NULL.
- PDO :: NULL_TO_STRING: NULL преобразуется в пустую строку.
- PDO :: ATTR_STRINGIFY_FETCHES: преобразовывать числовые значения в строки при извлечении. Требуется bool.
- PDO :: ATTR_STATEMENT_CLASS: Установить предоставленный пользователем класс операторов, полученный из PDOStatement. Не может использоваться с постоянными экземплярами PDO. Требуется массив (строка classname, array (mixed constructor_args)).
- PDO :: ATTR_TIMEOUT: указывает время ожидания в секундах. Не все драйверы поддерживают эту опцию, и ее значение может отличаться от драйвера к драйверу. Например, sqlite будет ожидать до этого значения времени, прежде чем отказаться от получения доступной для записи блокировки, но другие драйверы могут интерпретировать это как интервал ожидания соединения или чтения.
- PDO :: ATTR_AUTOCOMMIT (доступно в OCI, Firebird и MySQL): автоматическая ли фиксация каждого оператора.
- PDO :: ATTR_EMULATE_PREPARES Включает или отключает эмуляцию подготовленных операторов. Некоторые драйверы не поддерживают подготовленные операторы или имеют ограниченную поддержку для них. Используйте этот параметр, чтобы заставить PDO либо всегда эмулировать подготовленные операторы (если TRUE), либо пытаться использовать собственные подготовленные операторы (если FALSE).
- PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY (доступно в MySQL): использовать буферизованные запросы.
- PDO :: ATTR_DEFAULT_FETCH_MODE: установить режим выборки по умолчанию.
Возвращаемое значение:
Возвращает TRUE в случае успеха или FALSE в случае неудачи.
Пример:
В следующем примере показано, как установить атрибут PDO :: ATTR_ERRMODE.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e) {
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$attributes1 = array( "ERRMODE" );
foreach ( $attributes1 as $val ) {
echo "PDO::ATTR_$val: ";
var_dump ($conn->getAttribute( constant( "PDO::ATTR_$val" ) ));
}
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$attributes1 = array( "ERRMODE" );
foreach ( $attributes1 as $val )
{
echo "PDO::ATTR_$val: ";
var_dump ($conn->getAttribute( constant( "PDO::ATTR_$val" ) ));
}
?>
Выход:
PDO :: ATTR_ERRMODE:
PDOStatement class
Представляет подготовленный оператор и, после выполнения оператора, связанный набор результатов.
Детали класса :
PDOStatement implements Traversable
{ /* Properties */
readonly string $queryString;
/* Methods */
public bool bindColumn ( mixed $column , mixed &$param [, int $type [, int $maxlen [, mixed $driverdata ]]] )
public bool bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] )
public bool bindValue ( mixed $parameter , mixed $value [, int $data_type = PDO::PARAM_STR ] )
public bool closeCursor ( void )
public int columnCount ( void )
public void debugDumpParams ( void )
public string errorCode ( void )
public array errorInfo ( void )
public bool execute ([ array $input_parameters ] )
public mixed fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] )
public array fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )
public string fetchColumn ([ int $column_number = 0 ] )
public mixed fetchObject ([ string $class_name = "stdClass" [, array $ctor_args ]] )
public mixed getAttribute ( int $attribute )
public array getColumnMeta ( int $column )
public bool nextRowset ( void )
public int rowCount ( void )
public bool setAttribute ( int $attribute , mixed $value )
public bool setFetchMode ( int $mode )
}
PDOStatement :: bindColumn
Привязывает переменную PHP к столбцу в наборе результатов.
Синтаксис:
bool PDOStatement :: bindColumn (mixed $ column, mixed & $ param [, int $ type [, int $ maxlen [, mixed $ driverdata]]])
Параметры:
название | Описание | Тип |
---|---|---|
колонка | Номер столбца (1-индексированный) или имя столбца в наборе результатов. | смешанный |
пары | Имя переменной PHP, к которой будет привязан столбец. | смешанный |
тип | Тип данных параметра, указанный константами PDO :: PARAM_ *. | ИНТ |
MAXLEN | Подсказка для предварительного выделения (необязательно). | ИНТ |
DriverData | Необязательный параметр (ы) для водителя. | смешанный |
Возвращаемое значение:
Возвращает TRUE в случае успеха или FALSE в случае неудачи.
Пример:
В следующем примере показано, как переменную можно связать со столбцом в наборе результатов.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e) {
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$query = "SELECT fname, lname, dtob, country, emailid FROM user_details where gender ='M'";
$stmt = $conn->prepare($query);
$stmt->execute();
$stmt->bindColumn('emailid', $email);
while ( $row = $stmt->fetch( PDO::FETCH_BOUND ) )
{
echo "$email"."<br>";
}
?>
Выход:
[электронная почта защищена] [электронная почта защищена] [электронная почта защищена]
PDOStatement :: bindParam
Привязывает параметр к указанному имени переменной.
Синтаксис:
bool PDOStatement :: bindParam (смешанный $ параметр, смешанный & $ переменная [, int $ data_type = PDO :: PARAM_STR [, int $ length [, смешанный $ driver_options]]]))
Параметры:
название | Описание | Тип |
---|---|---|
параметр | Идентификатор параметра. Для подготовленного оператора, использующего именованные заполнители, это будет имя параметра в форме: имя. | смешанный |
переменная | Имя переменной PHP для привязки к параметру оператора SQL. | смешанный |
тип данных | Необязательно, константа PDO :: PARAM_ *. | ИНТ |
длина | Длина типа данных. | ИНТ |
driver_options | Необязательные (смешанные) специфичные для драйвера опции. | смешанный |
Возвращаемое значение:
Возвращает TRUE в случае успеха или FALSE в случае неудачи.
Пример - 1:
В следующем примере показано, как выполнить подготовленный оператор с именованными заполнителями.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e){
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$user_rating = 100;
$gender ='M';
$sth = $conn->prepare('SELECT fname, lname, dtob, country, emailid FROM user_details
WHERE user_rating > :user_rating AND gender = :gender');
$sth->bindParam(':user_rating', $user_rating, PDO::PARAM_INT);
$sth->bindParam(':gender', $gender, PDO::PARAM_STR, 1);
$sth->execute();
?>
Пример - 2:
В следующем примере показано, как выполнить подготовленный оператор с заполнителями вопросительного знака.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e){
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$user_rating = 100;
$gender ='M';
$sth = $conn->prepare('SELECT fname, lname, dtob, country, emailid FROM user_details
WHERE user_rating > ? AND gender = ?');
$sth->bindParam(1, $user_rating, PDO::PARAM_INT);
$sth->bindParam(2, $gender, PDO::PARAM_STR, 1);$sth->execute();
?>
PDOStatement :: bindValue
Привязывает значение к заполнителю с именованным или вопросительным знаком в операторе SQL.
Синтаксис:
bool PDOStatement :: bindValue (смешанный $ параметр, смешанный $ value [, int $ data_type = PDO :: PARAM_STR])
Параметры:
название | Описание | Тип |
---|---|---|
параметр | Идентификатор параметра. Для подготовленного оператора, использующего именованные заполнители, это будет имя параметра в форме: имя. | смешанный |
значение | Значение для привязки к параметру. | смешанный |
тип данных | Необязательно, PDO :: PARAM_ * константа. | ИНТ |
Возвращаемое значение:
Возвращает TRUE в случае успеха или FALSE в случае неудачи.
Пример - 1:
В следующем примере показано, как выполнить подготовленный оператор с именованными заполнителями.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e){
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$user_rating = 100;
$gender ='M';
$sth = $conn->prepare('SELECT fname, lname, dtob, country, emailid FROM user_details
WHERE user_rating > :user_rating AND gender = :gender');
$sth->bindValue(':user_rating', $user_rating, PDO::PARAM_INT);
$sth->bindValue('gender', $gender, PDO::PARAM_STR, 1);
print_r($sth->execute());
?>
Выход:
Массив ([0] => Массив ([fname] => Диана [0] => Диана [lname] => Лоренц [1] => Лоренц [страна] => Германия [2] => Германия))
Пример - 2:
В следующем примере показано, как выполнить подготовленный оператор с заполнителями вопросительного знака.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e){
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$user_rating = 100;
$gender ='M';
$sth = $conn->prepare('SELECT fname, lname, dtob, country, emailid FROM user_details
WHERE user_rating > ? AND gender = ?');
$sth->bindValue(':user_rating', $user_rating, PDO::PARAM_INT);
$sth->bindValue('gender', $gender, PDO::PARAM_STR, 1);
print_r($sth->execute());
?>
Выход:
Массив ([0] => Массив ([fname] => Палаш [0] => Палаш [lname] => Гхош [1] => Гхош [страна] => ИНДИЯ [2] => ИНДИЯ))
PDOStatement :: closeCursor
Закрывает курсор, позволяя снова выполнить оператор.
Синтаксис:
bool PDOStatement :: closeCursor (void)
Возвращаемое значение:
Возвращает TRUE в случае успеха или FALSE в случае неудачи.
Пример - 1:
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e) {
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
/* Create a PDOStatement object */
$stmt = $connec->prepare('SELECT * from user_details');
/* Create a second PDOStatement object */
$otherStmt = $connec->prepare("SELECT * from usser_details where gender ='M'");
/* Execute the first statement */
$stmt->execute();
/* Fetch only the first row from the results */
$stmt->fetch();
/* The following call to closeCursor() may be required by some drivers */
$stmt->closeCursor();
/* Now we can execute the second statement */
$otherStmt->execute();
?>
PDOStatement :: ColumnCount
Возвращает количество столбцов в наборе результатов.
Синтаксис:
int PDOStatement :: columnCount (void)
Возвращаемое значение:
Возвращает TRUE в случае успеха или FALSE в случае неудачи.
Пример - 1:
В следующем примере показано количество столбцов определенной таблицы.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e)
{
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$query = "select * from user_details";
$stmt = $connec->prepare( $query );
$stmt->execute();
echo "No. of columns: ".$stmt->columnCount();
?>
Выход:
Количество столбцов: 9
PDOStatement :: debugDumpParams
Дамп подготовленной команды SQL.
Синтаксис:void PDOStatement :: debugDumpParams (void)
Возвращаемое значение:
Значение не возвращается.
Пример - 1:
Вот пример PDOStatement :: debugDumpParams ().
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e)
{
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$user_rating = 100;
$gender ='M';
$sth = $connec->prepare('SELECT fname, lname, dtob, country, emailid FROM user_details
WHERE user_rating > :user_rating AND gender = :gender');
$sth->bindParam(':user_rating', $user_rating, PDO::PARAM_INT);
$sth->bindParam(':gender', $gender, PDO::PARAM_STR, 12);
$sth->execute();
$sth->debugDumpParams();
?>
Выход:
SQL: [116] SELECT fname, lname, dtob, страна, emailid ОТ user_details WHERE user_rating>: user_rating AND пол =: пол Параметры: 2 Ключ: Имя: [12]: user_rating paramno = -1 name = [12] ": user_rating "is_param = 1 param_type = 1 Ключ: Имя: [7]: пол paramno = -1 имя = [7]": пол "is_param = 1 param_type = 2
PDOStatement :: ERRORCODE
Получите SQLSTATE самой последней операции над объектом оператора базы данных.
Синтаксис:
открытая строка PDOStatement :: errorCode (void)
Возвращаемое значение:
То же самое для PDO :: errorCode (), за исключением того, что PDOStatement :: errorCode () извлекает коды ошибок только для операций, выполняемых с объектами PDOStatement.
Пример -
1:
В следующем примере SQL-запрос содержит ошибку (неправильное имя столбца). errorCode () отображает ошибку.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e)
{
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$stmt = $conn->prepare('SELECT fname, tname FROM user_details');
$stmt->execute();
echo "PDOStatement::errorCode(): "."<br>";
print_r ($stmt->errorcode());
?>
Выход:
PDOStatement :: ERRORCODE (): 42S22
PDOStatement :: errorInfo
Получает информацию об ошибке, связанной с последней операцией над дескриптором оператора.
Синтаксис:
массив PDOStatement :: errorInfo (void)
Параметры:
название | Описание | Тип |
---|---|---|
параметр | Идентификатор параметра. Для подготовленного оператора, использующего именованные заполнители, это будет имя параметра в форме: имя. | смешанный |
значение | Значение для привязки к параметру. | смешанный |
тип данных | Необязательно, PDO :: PARAM_ * константа. | ИНТ |
Возвращаемое значение:
PDOStatement :: errorInfo () возвращает массив информации об ошибке о последней операции, выполненной этим дескриптором оператора. Массив состоит из следующих полей:
0 - код ошибки SQLSTATE.
1 - код ошибки драйвера
2 - Сообщение об ошибке для конкретного драйвера.
Пример - 1:
В следующем примере SQL-оператор имеет ошибку, которая отображается errorinfo ().
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e)
{
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$stmt = $conn->prepare('SELECT fname, tname FROM user_details');
$stmt->execute();
print_r ($stmt->errorInfo());
?>
Выход:
Array ([0] => 42S22 [1] => 1054 [2] => Неизвестный столбец 'tname' в 'списке полей')
PDOStatement :: Execute
Выполняет подготовленное заявление.
Синтаксис:
bool PDOStatement :: execute ([массив $ input_parameters])
Параметры:
название | Описание | Тип |
---|---|---|
input_parameters | Массив, содержащий значения для маркеров параметров. | массив |
Возвращаемое значение:
Возвращает TRUE в случае успеха или FALSE в случае неудачи.
Пример - 1:
В следующем примере выполняется подготовленный со связанными переменными.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e){
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$user_rating = 100;
$gender ='M';
$sth = $connec->prepare('SELECT fname, lname, dtob, country, emailid FROM user_details
WHERE user_rating > :user_rating AND gender = :gender');
$sth->bindParam(':user_rating', $user_rating, PDO::PARAM_INT);
$sth->bindParam(':gender', $gender, PDO::PARAM_STR, 12);
$sth->execute();
while ( $row = $sth->fetch( PDO::FETCH_ASSOC ) )
{
echo "$row[fname]"." "."$row[lname]";
}
?>
Выход:
Джон Рэй
PDOStatement :: выборки
Извлекает следующую строку из набора результатов.
Синтаксис:
открытый смешанный PDOStatement :: fetch ([int $ fetch_style [, int $ cursor_orientation = PDO :: FETCH_ORI_NEXT [, int $ cursor_offset = 0]]])
Параметры:
название | Описание | Тип |
---|---|---|
параметр | Управляет тем, как следующая строка будет возвращена вызывающей стороне. Это значение должно быть одной из констант PDO :: FETCH_ * (см. Подробности о константах), по умолчанию равным значению PDO :: ATTR_DEFAULT_FETCH_MODE (по умолчанию PDO :: FETCH_BOTH). | ИНТ |
cursor_orientation | Это значение должно быть одной из констант PDO :: FETCH_ORI_ *, по умолчанию равным PDO :: FETCH_ORI_NEXT. | ИНТ |
смещение | Для объекта PDOStatement, представляющего прокручиваемый курсор, для которого для параметра cursor_orientation установлено значение PDO :: FETCH_ORI_ABS, это значение указывает абсолютный номер строки в наборе результатов, который должен быть выбран. | ИНТ |
Возвращаемое значение:
Возвращаемое значение этой функции в случае успеха зависит от типа выборки. Во всех случаях FALSE возвращается при ошибке.
Пример - 1:
В следующем примере показано, как извлекать строки с использованием разных стилей извлечения.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e) {
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$sth = $conn->prepare("SELECT fname, lname FROM user_details");
$sth->execute();
/* Exercise PDOStatement::fetch styles */
echo "PDO::FETCH_ASSOC: "."<br>";
echo "Return next row as an array indexed by column name"."<br>";
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);
echo("<br>");
echo "PDO::FETCH_BOTH: "."<br>";
echo "Return next row as an array indexed by both column name and number"."<br>";
$result = $sth->fetch(PDO::FETCH_BOTH);
print_r($result);
echo("<br>");
echo "PDO::FETCH_LAZY: "."<br>";
echo "Return next row as an anonymous object with column names as properties"."<br>";
$result = $sth->fetch(PDO::FETCH_LAZY);
print_r($result);
echo("<br>");
echo "PDO::FETCH_OBJ: "."<br>";
echo "Return next row as an anonymous object with column names as properties"."<br>";
$result = $sth->fetch(PDO::FETCH_OBJ);
echo $result->fname;
?>
Выход:
PDO :: FETCH_ASSOC: Возврат следующей строки в виде массива, проиндексированного по имени столбца Array ([fname] => Scott [lname] => Rayy) PDO :: FETCH_BOTH: Возврат следующей строки в виде массива, индексированного как по имени столбца, так и по номеру Массив ([fname] => Palash [0] => Palash [lname] => Ghosh [1] => Ghosh) PDO :: FETCH_LAZY: Возврат следующей строки как анонимного объекта с именами столбцов в качестве свойств PDORow Object ([queryString] => ВЫБРАТЬ имя_файла, имя_ЛОМА из user_details [имя_файла] => Диана [имя_папки] => Лоренц PDO :: FETCH_OBJ: Возврат следующей строки как анонимного объекта с именами столбцов в качестве свойств Джон
PDOStatement :: fetchAll
Возвращает массив, содержащий строки в наборе результатов.
Синтаксис:
массив PDOStatement :: fetchAll ([int $ fetch_style [, mixed $ fetch_argument [, массив $ ctor_args = array ()]]])
Параметры:
название | Описание | Тип |
---|---|---|
fetch_style | Указание формата данных строки. | смешанный |
fetch_argument | Этот аргумент имеет различное значение в зависимости от значения параметра fetch_style PDO :: FETCH_COLUMN: возвращает указанный 0-индексированный столбец. PDO :: FETCH_CLASS: возвращает экземпляры указанного класса, сопоставляя столбцы каждой строки с именованными свойствами в классе. PDO :: FETCH_FUNC: Возвращает результаты вызова указанной функции, используя столбцы каждой строки в качестве параметров в вызове. | смешанный |
ctor_args | Аргументы пользовательского конструктора класса, когда параметром fetch_style является PDO :: FETCH_CLASS. | ИНТ |
Возвращаемое значение:
Массив оставшихся строк в наборе результатов или значение false, если вызов метода завершился неудачно.
Пример - 1:
В следующем примере извлекаются все оставшиеся строки в наборе результатов
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e)
{
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$sth = $connec->prepare("SELECT fname, lname FROM user_details");
$sth->execute();
/* Fetch all of the remaining rows in the result set */
print("Fetch all of the remaining rows in the result set:\n");
$result = $sth->fetchAll();
print_r($result);
?>
Выход:
Получить все оставшиеся строки в наборе результатов: Array ([0] => Array ([fname] => Scott [0] => Scott [lname] => Rayy [1] => Rayy) [1] => Array ([fname] => Palash [0] => Palash [lname] => Ghosh [1] => Ghosh) [2] => Array ([fname] => Diana [0] => Diana [lname] = > Lorentz [1] => Lorentz) [3] => Array ([fname] => John [0] => John [lname] => ray [1] => ray))
PDOStatement :: fetchColumn
Возвращает один столбец подряд из следующей строки набора результатов.
Синтаксис:
строка PDOStatement :: fetchColumn ([int $ column_number = 0])
Параметры:
название | Описание | Тип |
---|---|---|
column_number | Необязательное целое число, обозначающее номер столбца, начинающийся с нуля. По умолчанию 0 (первый столбец в строке). | смешанный |
Возвращаемое значение:
Возвращает TRUE в случае успеха или FALSE в случае неудачи.
Пример - 1:
В следующем примере возвращается один столбец в строке.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e)
{echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$stmt = $connec->query("select * from user_details where gender='M';");
while ( $result = $stmt->fetchColumn(1))
{
echo $result . "<br>";
}
?>
Выход:
[электронная почта защищена] [электронная почта защищена] & 3 [электронная почта защищена]
PDOStatement :: fetchObject
Получает следующую строку как объект.
Синтаксис:
открытый смешанный PDOStatement :: fetchObject ([string $ class_name = "stdClass" [, array $ ctor_args]])
Параметры:
название | Описание | Тип |
---|---|---|
class_name | Имя класса для создания. | строка |
ctor_args | Массив с аргументами для пользовательского конструктора класса. | массив |
Возвращаемое значение:
В случае успеха возвращает объект с экземпляром класса. Возвращает false при ошибке.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e)
{
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$stmt = $connec->query( "select * from user_details where gender='M';" );
$result = $stmt->fetchObject();
echo $result->fname;
?>
Выход:
Скотт
PDOStatement :: GetAttribute
Получить атрибут заявления.
Синтаксис:
смешанный PDOStatement :: getAttribute (int $ attribute)
Получает атрибут оператора. В настоящее время нет общих атрибутов, но есть только один драйвер:
Возвращаемое значение:
Возвращает значение атрибута.
PDOStatement :: getColumnMeta
Возвращает метаданные для столбца в наборе результатов.
Синтаксис:
открытый массив PDOStatement :: getColumnMeta (int $ column)
Параметры:
название | Описание | Тип |
---|---|---|
колонка | 0-индексированный столбец в наборе результатов. | ИНТ |
Возвращаемое значение:
Возвращает ассоциативный массив.
Примечание: эта функция является ЭКСПЕРИМЕНТАЛЬНОЙ.
Пример - 1:
В следующем примере показаны результаты извлечения метаданных.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e) {
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$select = $connec->query("select fname, lname from user_details where gender='M';");
$meta = $select->getColumnMeta(0);
var_dump($meta)
?>
Выход:
array (7) {["native_type"] => string (10) "VAR_STRING" ["pdo_type"] => int (2) ["flags"] => array (1) {[0] => string (8) ) "not_null"} ["table"] => string (12) "user_details" ["name"] => string (5) "fname" ["len"] => int (100) ["precision"] = > int (0)}
PDOStatement :: nextRowset
Перемещает курсор к следующему набору строк в дескрипторе оператора множественного набора.
Синтаксис:
bool PDOStatement :: nextRowset (void)
Возвращаемое значение:
Возвращает TRUE в случае успеха или FALSE в случае неудачи.
Пример - 1:
В следующем примере показано, как курсор перемещается к следующему набору строк в выражении с несколькими наборами строк.
<?php
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e)
{
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$query1 = "select region_name from regions where region_id>2;";
$query2 = "select fname from user_details where gender='M';";
$stmt = $connec->query( $query1 . $query2 );
$rowset1 = $stmt->fetchAll();
$stmt->nextRowset();
$rowset2 = $stmt->fetchAll();
var_dump($rowset1 );
echo "<br>";
var_dump($rowset2 );?>
Выход:
array (2) {[0] => array (2) {["region_name"] => string (5) "Asia" [0] => string (5) "Asia"} [1] => array (2 ) {["region_name"] => string (23) "Ближний Восток и Африка" [0] => string (23) "Ближний Восток и Африка"}} array (3) {[0] => array (2) {["fname"] => string (5) "Scott" [0] => string (5) "Scott"} [1] => array (2 ) {["fname"] => string (6) "Palash" [0] => string (6) "Palash"} [2] => array (2) {["fname"] => string (4) "Джон" [0] => string (4) "Джон"}
PDOStatement :: ROWCOUNT
Возвращает количество строк, затронутых (добавленных, удаленных или измененных) последним оператором.
Синтаксис:
public int PDOStatement :: rowCount (void)
Возвращаемое значение:
Вернуть количество строк.
Пример - 1:
В следующем примере показано, как выполнить подготовленный оператор с именованными заполнителями.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e)
{
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
/* Delete all rows from the alluser table *
$del = $connec->prepare('DELETE FROM alluser');
$del->execute();
/* Return number of rows that were deleted */
$count = $del->rowCount();
echo "Deleted ".$count." number of rows ";
?>
Выход:
Удалено 4 числа строк
PDOStatement :: SetAttribute
Установите атрибут заявления. В настоящее время общие атрибуты не заданы, а только для конкретного драйвера:
Синтаксис:
bool PDOStatement :: setAttribute (int $ attribute, mixed $ value)
Возвращаемое значение:
Возвращает TRUE в случае успеха или FALSE в случае неудачи.
PDOStatement :: setFetchMode
Установите режим выборки по умолчанию для этого оператора.
Синтаксис:
public bool PDOStatement :: setFetchMode (int $ mode) public bool PDOStatement :: setFetchMode (int $ PDO :: FETCH_COLUMN, int $ colno) public bool PDOStatement :: setFetchMode (int $ PDO :: FETCH_CLASS, строка $ classname, массив $ ctorargs) public bool PDOStatement :: setFetchMode (int $ PDO :: FETCH_INTO, объект $ объект)
Параметры:
название | Описание | Тип |
---|---|---|
Режим | Режим выборки должен быть одной из констант PDO :: FETCH_ *. Смотрите список констант. | смешанный |
colno | Номер столбца. | ИНТ |
имя_класса | Название класса. | строка |
ctorargs | Конструктор аргументы. | массив |
объект | Объект. | объект |
Возвращаемое значение:
Возвращает TRUE в случае успеха или FALSE в случае неудачи.
Пример - 1:
В следующем примере демонстрируется использование констант PDO :: FETCH_ASSOC, PDO :: FETCH_NUM, PDO :: FETCH_BOTH, PDO :: FETCH_LAZY, PDO :: FETCH_OBJ.
<?php
try {
$dbhost ='localhost';
$dbname='hr';
$dbuser ='root';
$dbpass = '';
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e) {
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$stmt1 = $conn->query( "select * from user_details where gender='M'" );
while ( $row = $stmt1->fetch())
{
echo($row['fname'] . "<br>");
}
echo "<br>"."PDO::FETCH_ASSOC -------------"."<br>";
$stmt = $conn->query( "select * from user_details where gender='M'" );
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$result = $stmt->fetch();
print_r( $result );
echo "<br>"."PDO::FETCH_NUM -------------"."<br>";
$stmt = $conn->query( "select * from user_details where gender='M'" );
$stmt->setFetchMode(PDO::FETCH_NUM);
$result = $stmt->fetch();
print_r( $result );
echo "<br>"."PDO::FETCH_BOTH -------------"."<br>";
$stmt = $conn->query( "select * from user_details where gender='M'" );
$stmt->setFetchMode(PDO::FETCH_BOTH);
$result = $stmt->fetch();
print_r( $result );
echo "<br>"."PDO::FETCH_LAZY -------------"."<br>";
$stmt = $conn->query( "select * from user_details where gender='M'" );
$stmt->setFetchMode(PDO::FETCH_LAZY);
$result = $stmt->fetch();
print_r( $result );
echo "<br>"."PDO::FETCH_OBJ -------------"."<br>";
$stmt = $conn->query( "select * from user_details where gender='M'" );
$stmt->setFetchMode(PDO::FETCH_OBJ);
$result = $stmt->fetch();
print_r( $result );
?>
Выход:
Скотт Палаш Джон PDO :: FETCH_ASSOC ------------- Массив ([userid] => scott123 [пароль] => [электронная почта защищена] [fname] => Скотт [lname] => Rayy [пол] => M [dtob] => 1990-05-15 [страна] => США [user_rating] => 100 [emailid] => [электронная почта защищена] ) PDO :: FETCH_NUM ------------- Array ([0] => scott123 [1] => [электронная почта защищена] [2] => Scott [3] => Rayy [4] => M [5] => 1990-05-15 [6] => США [7] => 100 [8] => [электронная почта защищена] ) PDO :: FETCH_BOTH ------------- Массив ([идентификатор пользователя] => scott123 [0] => scott123 [пароль] => [защищенный адрес электронной почты] [1] => [защищенный адрес электронной почты] [имя_файла] => Скотт [2] => Скотт [имя_лиента] => Рэй [3] => Rayy [пол] => M [4] => M [dtob] => 1990-05-15 [5] => 1990-05-15 [страна] => США [6] => США [user_rating] => 100 [7] => 100 [emailid] => [электронная почта защищена] [8] => [электронная почта защищена] e-site.com) PDO :: FETCH_LAZY ------------- PDORow Object ([queryString] => выберите * из user_details, где пол = 'M' [userid] => scott123 [пароль] => [защищен электронной почтой] [имя_файла] => Скотт [lname] => Рэй [пол] => M [dtob] => 1990-05-15 [страна] => США [user_rating] => 100 [emailid] => [электронная почта защищена] ) PDO :: FETCH_OBJ ------------- stdClass Object ([userid] => scott123 [пароль] => [электронная почта защищена] [fname] => Scott [lname] => Rayy [пол] => M [dtob] => 1990-05-15 [страна] = > США [user_rating] => 100 [emailid] => [электронная почта защищена] )
Предыдущая: PHP объектно-ориентированное программирование
Далее: обработка форм PHP
Новый контент: Composer: менеджер зависимостей для PHP , R программирования