The mysqli_stmt class
(PHP 5)
Введение
Представляет подготовленное выражение.
Обзор классов
mysqli_stmt
{
/* Свойства */
int $affected_rows;
int $errno;
array $error_list;
string $error;
int $field_count;
int $insert_id;
int $num_rows;
int $param_count;
string $sqlstate;
/* Методы */
}Содержание
- mysqli_stmt::$affected_rows — Возвращает общее количество строк, измененных, удаленных или добавленных последним выполненным выражением
- mysqli_stmt::attr_get — Получает текущее значение атрибута запроса
- mysqli_stmt::attr_set — Изменяет поведение подготовленного запроса
- mysqli_stmt::bind_param — Привязка переменных к параметрам подготавливаемого запроса
- mysqli_stmt::bind_result — Привязка переменных к подготавленному запросу для размещения результата
- mysqli_stmt::close — Закрывает подготовленный запрос
- mysqli_stmt::data_seek — Переход к заданной строке в результирующем наборе
- mysqli_stmt::$errno — Возвращает код ошибки выполнения последнего запроса
- mysqli_stmt::$error_list — Возвращает список ошибок выполнения последнего запроса
- mysqli_stmt::$error — Возвращает строку с пояснением последней ошибки при выполнении запроса
- mysqli_stmt::execute — Выполняет подготовленный запрос
- mysqli_stmt::fetch — Связывает результаты подготовленного выражения с переменными
- mysqli_stmt::$field_count — Возвращает число полей в заданном выражении
- mysqli_stmt::free_result — Освобождает память от результата запроса, указанного дескриптором
- mysqli_stmt::get_result — Получает результат из подготовленного запроса
- mysqli_stmt::get_warnings — Получает результат от SHOW WARNINGS
- mysqli_stmt::$insert_id — Получает ID сгенерированный предыдущей операцией INSERT
- mysqli_stmt::more_results — Проверяет, есть ли еще наборы строк в результате мультизапроса
- mysqli_stmt::next_result — Читает следующий набор строк из мультизапроса
- mysqli_stmt::$num_rows — Возвращает число строк в результате запроса
- mysqli_stmt::$param_count — Возвращает количество параметров в запросе
- mysqli_stmt::prepare — Подготовка SQL запроса к выполнению
- mysqli_stmt::reset — Сбрасывает результаты выполнения подготовленного запроса
- mysqli_stmt::result_metadata — Возвращает метаданные результирующей таблицы подготавливаемого запроса
- mysqli_stmt::send_long_data — Отправка данных блоками
- mysqli_stmt::$sqlstate — Возвращает код SQLSTATE ошибки, вызванной в ходе выполнения последней операции над запросом
- mysqli_stmt::store_result — Передает результирующий набор запроса на клиента
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с базами данных
- Расширения для работы с базами данных отдельных производителей
- MySQL Drivers and Plugins
- Введение
- Краткий обзор
- Краткое руководство
- Установка и настройка
- Расширение mysqli и постоянные соединения
- Предопределенные константы
- Notes
- Основная информация о функциях расширения MySQLi
- Examples
- Класс mysqli
- The mysqli_stmt class
- The mysqli_result class
- Класс mysqli_driver
- Класс mysqli_warning
- The mysqli_sql_exception class
- Синонимы и устаревшие Функции Mysqli
- Список изменений
Коментарии
The prototype of the mysqli_stmt constructor is mysqli_stmt::__construct(mysqli $link, $query);
To extend mysqli_stmt, do
class myStmt extends mysqli_stmt {
public function __construct($link, $query) {
parent::__construct($link, $query);
}
}
class myI extends mysqli {
public function prepare($query) {
return new myStmt($this, $query);
}
}
http://blog.myhat.de/2007/06/26/pdo-and-extending-mysqli/ has further infos including how to extend mysqli_result
<?php
class MySQL
{
protected $mysql;
function __construct()
{
//Get MySQL config values from config.ini file
if($config = parse_ini_file("../config.ini"))
{
// Obtener los valores del fichero de configuración config.ini
$ip = $config["ip"];
$user = $config["usuario"];
$pass = $config["password"];
$bd = $config["bd"];
//Connection between a database and php
$this->mysql = new mysqli($ip, $user, $pass, $bd);
}
}
function setResultQuery($query, $param)
{
$array = NULL;
if(!$this->mysql->connect_errno)
{
$stmt = $this->setStatement($query, $param);
try
{
if($stmt != NULL)
{
if($stmt->execute())
{
//Obtener resultados
$stmt->store_result();
$variables = array();
$data = array();
$meta = $stmt->result_metadata();
while($field = $meta->fetch_field())
{
$variables[] = &$data[$field->name];
}
call_user_func_array(array($stmt, 'bind_result'), $variables);
$i=0;
while($stmt->fetch())
{
$array[$i] = array();
foreach($data as $k=>$v)
$array[$i][$k] = $v;
$i++;
}
$stmt->close();
}
}
}catch(Exception $e){
$array = FALSE;
}
}
return $array;
}
function setStatement($query, $param)
{
try
{
$stmt = $this->mysql->prepare($query);
$ref = new ReflectionClass('mysqli_stmt');
if(count($param) != 0)
{
$method = $ref->getMethod('bind_param');
$method->invokeArgs($stmt, $param);
}
}catch(Exception $e){
if($stmt != null)
{
$stmt->close();
}
}
return $stmt;
}
function setNoResultQuery($query, $param)
{
$validation = FALSE;
if(!$this->mysql->connect_errno)
{
try
{
$stmt = $this->setStatement($query, $param);
if($stmt != null)
{
if($stmt->execute())
{
$stmt->close();
$validacion = TRUE;
}
}
}catch(Exception $e){
$validation = FALSE;
}
}
return $validation;
}
function __destruct()
{
$this->mysql->close();
}
}
?>