Chose Language:
Author: Admin/Publisher |not checked

PHP mysqli_stmt

Representa un prepare statement de MySQL

Esta clase forma parte de la extensión MySQLi de PHP
Sinopsis
 class mysqli_stmt {
/* Properties */
public readonly int|string $affected_rows;
public readonly int|string $insert_id;
public readonly int|string $num_rows;
public readonly int $param_count;
public readonly int $field_count;
public readonly int $errno;
public readonly string $error;
public readonly array $error_list;
public readonly string $sqlstate;
public int $id;
/* Methods */
public __construct(mysqli $mysql, ?string $query = null)
public attr_get(int $attribute): int
public attr_set(int $attribute, int $value): bool
public bind_param(string $types, mixed &$var, mixed &...$vars): bool
public bind_result(mixed &$var, mixed &...$vars): bool
public close(): bool
public data_seek(int $offset): void
public execute(?array $params = null): bool
public fetch(): ?bool
public free_result(): void
public get_result(): mysqli_result|false
public get_warnings(): mysqli_warning|false
public more_results(): bool
public next_result(): bool
public num_rows(): int|string
public prepare(string $query): bool
public reset(): bool
public result_metadata(): mysqli_result|false
public send_long_data(int $param_num, string $data): bool
public store_result(): bool
}
contenido

La clase mysqli_stmt es por lo general inicializada desde la clase mysqli utilizando el método prepare.

Otra manera de inicializar mysqli_stmt es utilizar el método stmt_init en un objeto mysqli

En pocas palabras tenemos 2 formas distintas de inicializar la clase mysqli_stmt desde otra clase, las cuales son:

También podemos crear un objeto mysqli_stmt usando su constructor.

Propiedades

https://blastcoding.com/php-mysqli_stmt/#propiedades

Antes de ver las propiedades, tenga en cuenta que debemos tener un objeto mysqli_stmt. En cada propiedad que veremos a continuación, este objeto está representado con la variable $stmt.

affected_rows

https://blastcoding.com/php-mysqli_stmt/#affected_rows

Obtiene el número de filas afectadas de la última consulta MySQL realizada utilizando prepare

Sintaxis
$stmt->affected_rows;

insert_id

https://blastcoding.com/php-mysqli_stmt/#insert_id

Devuelve el ID generado en la operación INSERT anterior si posee una id AUTO_INCREMENT.

La operación anterior debe tener una id AUTO_INCREMENT.

Sintaxis
$stmt->insert_id;

num_rows

https://blastcoding.com/php-mysqli_stmt/#num_rows

Número de filas pertenecientes a una consulta ejecutada anteriormente

Sintaxis
$stmt->num_rows;

param_count

https://blastcoding.com/php-mysqli_stmt/#param_count

Es la cantidad de parámetros pasados en la consulta hecha con prepare

Sintaxis
$stmt->param_count;

field_count

https://blastcoding.com/php-mysqli_stmt/#field_count

Devolverá el número de campos que se ha utilizado en la consulta prepre

Sintaxis
$stmt->field_count;

errno

https://blastcoding.com/php-mysqli_stmt/#errno

Código de error de la consulta más reciente ejecutada sin importar si tuvo éxito o fallo. puede ver los códigos de error en https://dev.mysql.com/doc/dev/mysql-server/latest/errmsg_8h.html

Sintaxis
$stmt->errno;

error

https://blastcoding.com/php-mysqli_stmt/#error

Descripción del último error obtenido luego de ejecutada una consulta(sentencia SQL)

Sintaxis
$stmt->error;

error_list

https://blastcoding.com/php-mysqli_stmt/#error_list

Lista de errores de la última consulta ejecutada en forma de array cada error posee un array asociativo con errno, error, y sqlstate.

Sintaxis
$stmt->error_list;

sqlstate

https://blastcoding.com/php-mysqli_stmt/#sqlstate

error SQLSTATE de la operación previa

Sintaxis
$stmt->sqlstate;

id

https://blastcoding.com/php-mysqli_stmt/#id

Prepare statement ID

Sintaxis
$stmt->id;

Métodos

https://blastcoding.com/php-mysqli_stmt/#metodos

Al igual que en las propiedades, representaremos el objeto mysqli_stmt con la variable $stmt en los recuadros de sintaxis.

__construct

https://blastcoding.com/php-mysqli_stmt/#__construct

No hay mucho que decir __construct como en toda clase es el método constructor, con este crea un objeto de clase mysqli_stmt. Está más que claro que esta clase depende de la clase mysqli así que debemos de crear un objeto de esa clase primero.

Description / Descripción
public mysqli_stmt::__construct(mysqli $mysqli, ?string $query = null)
Sintaxis
$stmt = new mysqli_stmt($mysqli,$query);

Parámetros

$mysqli – variable que contenga un objeto mysqli o objeto mysqli directamente, trate de no hacer esto último, sea lo más prolijo posible.

$query – este parámetro es opcional, ya que por defecto su valor es null

attr_get

https://blastcoding.com/php-mysqli_stmt/#attr_get

Obtiene el valor del atributo de un prepare statement, estos cambian el comportamiento del prepare statement y pueden ser asignados con attr_set

Description / Descripción
public mysqli_stmt::attr_get(int $attribute): int
Sintaxis
$at = $stmt->attr_get($atribute);

Si me disculpa, pero la información del sitio oficial de PHP sobre este método es tan vaga que vamos a probar este método.

Bien gente haciendo pruebas parece que tiene q ver con mysql-stmt-attr-get de mysql puede ver más info aquí https://dev.mysql.com/doc/c-api/5.6/en/mysql-stmt-attr-get.html

Al parecer es el número de la opción que tenemos seteada.

attr_set

https://blastcoding.com/php-mysqli_stmt/#attr_set

Setea los atributos de un prepared statement, al hacer esto podemos cambiar el comportamiento que posee nuestro prepare statement.

Description / Descripción
public mysqli_stmt::attr_set(int $attribute, int $value): bool

Este método está directamente ligado a mysql-stmt-attr-set

https://dev.mysql.com/doc/c-api/5.6/en/mysql-stmt-attr-set.html

bind_param

https://blastcoding.com/php-mysqli_stmt/#bind_param

Este método ayuda a pasar variables a una consulta prepare statement como parametros.

Description / Descripción
public mysqli_stmt::bind_param(string $types, mixed &$var, mixed &...$vars): bool
Sintaxis
$stmt->bind_param($types,$var1,$var2, ..varN);

Parametros

$types – es un string especificando los distintos tipos de valores vea la siguiente tabla:

CharacterDescription
icorresponding variable has type int
dcorresponding variable has type float
scorresponding variable has type string
bcorresponding variable is a blob and will be sent in packets

Por ejemplo, si $types ="idds" nuestro método está esperando que las siguientes variables sean integer, float, float, string respectivamente.

$var1, $var2, …$varN – distintas variables que seran los parametros en el prepare statement, el numero de variables debe ser igual al numero de caracteres en $types

Retornos

true o false dependiendo de si tuvo éxito o no

bind_result

https://blastcoding.com/php-mysqli_stmt/#bind_result

Vincula variables a un prepare statement, el resultado de la consulta es almacenado en estas de tal modo que se pueden utilizar luego.

La sentencia ya debe haber sido ejecutada antes de utilizar este método.

Description / Descripción
public mysqli_stmt::bind_result(mixed &$var, mixed &...$vars): bool
Sintaxis
$stmt->bind_result($var1,$var2,$var3, ..$varN)

Parametros

$var1, $var2, $var3, ..$varN – estas variables serán las columnas que se desean obtener de la consulta

Retornos

Retornará true o false dependiendo si tuvo éxito o no.

close

https://blastcoding.com/php-mysqli_stmt/#close

Cierra un prepare Statement(sentencia preparada), si hay resultados pendientes esta cerrará de todas formas, cancelando estos.

Description / Descripción
public mysqli_stmt::close(): bool
Sintaxis
$stmt->close();

data_seek

https://blastcoding.com/php-mysqli_stmt/#data_seek

Obtiene una fila según su parámetro $offset de los resultados obtenidos luego de ejecutar una sentencia (prepare statement). Debemos llamar el método store_result antes de llamar este método

Description / Descripción
public mysqli_stmt::data_seek(int $offset): void
Sintaxis
$stmt->data_seek($offset);

Parametro

$offset – dirá que fila es la que deseamos obtener, offset comienza desde cero y, por lo tanto, la fila que queramos obtener debemos restarle 1(-1)

execute

https://blastcoding.com/php-mysqli_stmt/#execute

Con el método execute ejecutaremos el prepare statement.

Description / Descripción
public mysqli_stmt::execute(?array $params = null): bool
Sintaxis
$stmt->execute($params);

Parámetro

$params – este será un array con los distintos valores que irán en los parámetros del prepare statement.

Para simplificar esto puede utilizar por ejemplo ["hola",2,"parametro 3",$parametro4] o si tienes los parámetros en distintas variables utilizar compact.

Por último, y la solución que me parece mejor es no pasarle parámetros y utilizar bind_param antes de utilizar execute.

Retornos

Retornará true o false dependiendo si la ejecución tuvo éxito o no.

fetch

https://blastcoding.com/php-mysqli_stmt/#fetch

Obtiene los resultados de un prepare statement luego de ser ejecutado. Este método depende de execute, ya que no podemos obtener resultados sin ejecutar la consulta.

Description / Descripción
public mysqli_stmt::fetch(): ?bool
Sintaxis
$stmt->fetch();

Retornos

En el caso de obtener los datos devolverá true, si ocurrió un error devolverá false y en caso de que no existan las filas devolverá null. El último retorno puede ocurrir también si ha ocurrido un truncamiento de los datos tanto provocado como no.

free_result

https://blastcoding.com/php-mysqli_stmt/#free_result

Libera la memoria que fue asignada al usar el metodo store_result, permitiendonos asi manejar la sentencia actual.

Este método está relacionado con store_result.

Description / Descripción
public mysqli_stmt::free_result(): void
Sintaxis
$stmt->free_result();

get_result

https://blastcoding.com/php-mysqli_stmt/#get_result

Obtiene los resultados del prepare statement como un objeto mysqli_result. Este método no debe ser usado en conjunto con store_result.

Description / Descripción
public mysqli_stmt::get_result(): mysqli_result|false
Sintaxis
$result = $stmt->get_result();

get_warnings

https://blastcoding.com/php-mysqli_stmt/#get_warnings

Obtiene el resultado de la consulta SHOW WARNINGS

SHOW WARNINGS devuelve información sobre las distintas condiciones (errors, warnings, y notes)

Ejemplo de SHOW WARNINGS en MYSQL
mysql> SHOW WARNINGS\G
*************************** 1. row ***************************
  Level: Warning
   Code: 1265
Message: Data truncated for column 'b' at row 1
*************************** 2. row ***************************
  Level: Warning
   Code: 1048
Message: Column 'a' cannot be null
*************************** 3. row ***************************
  Level: Warning
   Code: 1264
Message: Out of range value for column 'a' at row 3
3 rows in set (0.00 sec)
Description / Descripción
public mysqli_stmt::get_warnings(): mysqli_warning|false
Sintaxis
$warnings = $stmt->get_warnings();

more_results

https://blastcoding.com/php-mysqli_stmt/#more_results

Comprueba si existen más resultados de consultas si se ha hecho una consulta multiple

Description / Descripción
public mysqli_stmt::more_results(): bool

next_result

https://blastcoding.com/php-mysqli_stmt/#next_result

Obtiene el próximo resultado de una consulta múltiple

Description / Descripción
public mysqli_stmt::next_result(): bool

num_rows

https://blastcoding.com/php-mysqli_stmt/#num_rows

Número de filas devueltas en la consulta, necesitarás de store_result para poder utilizar este método.

Description / Descripción
public mysqli_stmt::num_rows(): int|string

prepare

https://blastcoding.com/php-mysqli_stmt/#prepare

Prepara un prepare statement(sentencia) para su ejecución, En caso de que la sentencia posea parametros estos han de ser indicados con el signo ? estos tambien son llamados placeholders.

Description / Descripción
public mysqli_stmt::prepare(string $query): bool
Sentencia
$stmt->prepare($query);

Parametro

$query -esta será la consulta a ser ejecutada, por ejemplo:"SELECT calle, numero, barrio FROM direcciones WHERE calle=?" recuerde que ? indica el parametro que le pasaremos con bind_param o en la ejecución execute

reset

https://blastcoding.com/php-mysqli_stmt/#result

Resetea un prepare statement llevando a si al estado anterior antes de correr el prepare.

Description / Descripción
public mysqli_stmt::reset(): bool

Retornos

true en caso de poder resetear, false en caso de error

result_metadata

https://blastcoding.com/php-mysqli_stmt/#result_metadata

Retorna un objeto mysqli_result con la metadata de un prepare statement(sentencia). La sentencia debe ser ejecutada con execute antes para obtener un resultado antes de utilizar result_metadata.

Description / Descripción
public mysqli_stmt::result_metadata(): mysqli_result|false
Sintaxis
$stmt->result_metadata();

Retornos

En caso de éxito devolverá un objeto mysqli_result

false en caso de fallo

send_long_data

https://blastcoding.com/php-mysqli_stmt/#send_long_data

Nos permite mandar la data en bloques(secciones) de parámetros de nuestro prepare statement

Description / Descripción
public mysqli_stmt::send_long_data(int $param_num, string $data): bool
Sintaxis
$stmt->send_long_data($param,$data);

Retornos

Retorna true en caso de poder mandar la data false en caso de fallo.

store_result

https://blastcoding.com/php-mysqli_stmt/#store_result

Almacena el resultado de un prepare statement en un buffer interno, estos resultados pueden ser obtenidos con fetch

Description / Descripción
public mysqli_stmt::store_result(): bool
Sintaxis
$stmt->store_result();

Retornos

true si tiene éxito false si falla.

Category: php
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category