The mysqli_stmt class

(PHP 5, PHP 7)

Введение

Представляет подготовленное выражение.

Обзор классов

mysqli_stmt {
/* Свойства */
int $errno;
string $error;
string $sqlstate;
/* Методы */
__construct ( mysqli $link [, string $query ] )
int attr_get ( int $attr )
bool attr_set ( int $attr , int $mode )
bool bind_param ( string $types , mixed &$var1 [, mixed &$... ] )
bool bind_result ( mixed &$var1 [, mixed &$... ] )
bool close ( void )
void data_seek ( int $offset )
bool execute ( void )
bool fetch ( void )
void free_result ( void )
mysqli_result get_result ( void )
object get_warnings ( mysqli_stmt $stmt )
mixed prepare ( string $query )
bool reset ( void )
mysqli_result result_metadata ( void )
bool send_long_data ( int $param_nr , string $data )
bool store_result ( void )
}

Содержание

  • 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::__construct — Constructs a new mysqli_stmt object
  • 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 — Передает результирующий набор запроса на клиента

Коментарии

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
2008-05-20 09:35:52
http://php5.kiev.ua/manual/ru/class.mysqli-stmt.html
<?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();
    }
}
?>
2013-12-20 13:35:44
http://php5.kiev.ua/manual/ru/class.mysqli-stmt.html

    Поддержать сайт на родительском проекте КГБ