Escolar Documentos
Profissional Documentos
Cultura Documentos
Ejemplos
Todos los ejemplos en la documentacin de mysqli utilizan la base de datos world.
sta se puede encontrar en http://downloads.mysql.com/docs/world.sql.gz
Informacin general
Cada una tiene sus ventajas e inconvenientes. El siguiente apartado trata de dar
una breve introduccin a los aspectos clave de cada API.
Nota:
Si utiliza MySQL versin 4.1.3 o superior, se recomienda encarecidamente utilizar
esta extensin.
Adems de la interfaz orientada a objetos, esta extensin tambin proporciona una
interfaz procedural.
La extensin mysqli est desarrollada mediante el framework de extensiones de
PHP. Su cdigo fuente se ubica en el directorio ext/mysqli.
Para ms informacin sobre la extensin mysqli, revise MySQLi.
Qu es PDO?
Los Objetos de Datos de PHP, o PDO, son una capa de abstraccin de bases de
datos especficas para aplicaciones PHP. PDO ofrece una API homognea para
las aplicaciones PHP, independientemente del tipo de servidor de bases de datos
con el que se vaya a conectar la aplicacin. En teora, si se utiliza la API PDO, se
podra cambiar el servidor de bases de datos en uso, por ejemplo de Firebird a
MySQL, y slo se necesitaran algunos cambios menores en el cdigo PHP.
Otros ejemplos de capas de abstraccin de bases de datos son JDBC para
aplicaciones Java o DBI para Perl.
A pesar de que PDO tiene sus ventajas, tales como una API limpia, sencilla y
portable, su mayor inconveniente es que no permite utilizar todas las
funcionalidades avanzadas en la ltima versin del servidor MySQL. Por ejemplo,
PDO no permite hacer uso de las Declaraciones Mltiples de MySQL.
PDO est desarrollado utilizando el framework de extensiones de PHP. Su cdigo
fuente se ubica en el directorio ext/pdo.
Para ms informacin de PDO, revise PDO.
Qu es el driver PDO MYSQL?
El driver PDO MYSQL no es una API en s, al menos desde el punto de vista del
programador de PHP. En realidad, el driver PDO MYSQL se encuentra una capa
por debajo del propio PDO, y ofrece funcionalidades especficas de MySQL. Si
bien el programador realiza las llamadas a la API de PDO, PDO utiliza el driver
PDO MYSQL para llevara a cabo la comunicacin con el servidor MySQL.
El driver PDO MYSQL es uno de los muchos drivers PDO disponibles. Otros de los
drivers disponibles son los de los servidores de bases de datos Firebird y
PostgreSQL.
El driver MYSQL PDO est desarrollado utilizando el framework de extensiones de
PHP. Su cdigo fuente est ubicado en el directorio ext/pdo_mysql. No ofrece
ninguna API al programador PHP.
Para ms informacin sobre el driver PDO MYSQL, revise MySQL (PDO).
Qu es el Driver Nativo de MySQL?
Tanto la extensin mysql, como mysqli, y el driver PDO MYSQL, utilizan para llevar
a cabo las comunicaciones con el servidor de bases de datos MySQL una
biblioteca de bajo nivel que genera el protocolo necesario. Hace un tiempo, la
nica biblioteca disponible eralibmysqlclient.
Sin embargo, la interfaz que ofrece libmysqlclient no estaba optimizada para
comunicarse con aplicaciones PHP, dado que libmysqlclient se desarroll
originalmente teniendo en mente aplicacines hechas en C. Por esta razn, se
desarroll el Driver Nativo de MySQL, mysqlnd, como una alternativa
a libmysqlclient para las aplicaciones en PHP.
Tanto la extensin mysql, como la extensin mysqli y el driver PDO MySQL, se
pueden configurar por separado para utilizar o bienlibmysqlclient o bien mysqlnd.
Dado que mysqlnd fue desarrollado especficamente para ser utilizado en sistemas
PHP, tiene numerosas mejoras en cuanto a uso de memoria y velocidad respecto
a libmysqlclient. Se recomienda encarecidamente hacer uso de dichas mejoras.
Nota:
Extensin
MySQL de
Nativo MySQL)
PHP
5.0
5.0
Antes de 3.0
Estado de desarrollo de
Extensin
mysqli de PHP
Versin de PHP en que se
introdujo
MySQL
Slo se le
PHP 5.3
mantiene
No
S - opcin
recomendada
No
No
No
caracteres
Extensin
mysqli de PHP
Extensin
MySQL de
Nativo MySQL)
PHP
No
Mayormente
No
Mayormente
No
cliente
Soporte para
Procedimientos
Almacenados
Soporte para Declaraciones S
Mltiples
Suporte para todas las
funcionalidades de MySQL
4.1+
ROM DUAL");
$fila = mysqli_fetch_assoc($resultado);
echo $fila['_msg'];
$mysql = mysql_connect("ejemplo.com", "usuario", "contrasea");
mysql_select_db("test");
$resultado = mysql_query("SELECT 'la extensin mysql para nuevos desarrol
los.' AS _msg FROM DUAL", $mysql);
$fila = mysql_fetch_assoc($resultado);
echo $fila['_msg'];
?>
$fila = mysqli_fetch_assoc($resultado);
echo $fila['_msg'];
$mysqli = new mysqli("ejemplo.com", "usuario", "contrasea", "basedatos")
;
if ($mysqli->connect_errno) {
echo "Fallo al conectar a MySQL: " . $mysqli->connect_error;
}
$resultado = $mysqli->query("SELECT 'elecciones para complacer a todos.'
AS _msg FROM DUAL");
$fila = $resultado->fetch_assoc();
echo $fila['_msg'];
?>
if (!$resultado) {
echo "Fallo al ejecutar la consulta: (" . $mysqli->errno . ") " . $my
sqli->error;
}
if ($fila = $resultado->fetch_assoc()) {
echo $fila['_msg'];
}
?>
Conexiones
306);
if ($mysqli->connect_errno) {
echo "Fallo al contenctar a MySQL: (" . $mysqli->connect_errno . ") "
. $mysqli->connect_error;
}
echo $mysqli->host_info . "\n";
?>
Los valores resultantes de los parmetros son pasados a la biblioteca cliente que
est usando esta extensin. Si la biblioteca cliente detecta parmetros vacos o no
establecidos, puede usar los valores internos predeterminados de la biblioteca.
Valores predeterminados internos de conexin de la biblioteca
Si el valor del host no est establecido o est vaco, la biblioteca cliente usar una
conexin de socket Unix sobre localhost. Si el socket no est establecido o est
vaco, y es solicitada una conexin de socket Unix, se intentar una conexinal
socket predeterminado de/tmp/mysql.sock.
Ejecutar sentencias
$fila = $resultado->fetch_assoc();
echo " id = " . $fila['id'] . "\n";
}
echo "Orden del conjunto de resultados...\n";
$resultado->data_seek(0);
while ($fila = $resultado->fetch_assoc()) {
echo " id = " . $fila['id'] . "\n";
}
?>
Sentencias Preparadas
}
?>
Ejecucin repetida
Una sentencia preparada se puede ejecutar repetidamente. En cada ejecucin el
valor actual de la variable vinculada se evala y se enva al servidor. La sentencia
no se analiza de nuevo. La plantilla de la sentencia no es transferida otra vez al
servidor.
Ejemplo #3 INSERT preparada una vez, ejecutada mltiples veces
<?php
$mysqli = new mysqli("ejemplo.com", "usuario", "contrasea", "basedatos")
;
if ($mysqli->connect_errno) {
echo "Fall la conexin a MySQL: (" . $mysqli->connect_errno . ") " .
$mysqli->connect_error;
}
/* Sentencia no preparada */
if (!$mysqli->query("DROP TABLE IF EXISTS test") || !$mysqli>query("CREATE TABLE test(id INT)")) {
echo "Fall la creacin de la tabla: (" . $mysqli->errno . ") " . $my
sqli->error;
}
/* Sentencia preparada, etapa 1: preparacin */
if (!($sentencia = $mysqli->prepare("INSERT INTO test(id) VALUES (?)")))
{
echo "Fall la preparacin: (" . $mysqli->errno . ") " . $mysqli>error;
}
/* Sentencia preparada, etapa 2: vinculacin y ejecucin */
$id = 1;
if (!$sentencia->bind_param("i", $id)) {
[0]=>
string(1) "2"
}
[2]=>
array(1) {
[0]=>
string(1) "3"
}
[3]=>
array(1) {
[0]=>
string(1) "4"
}
}
Cada sentencia preparada ocupa recursos del servidor. Las sentencias deberan
cerrarse explcitamente inmediatamente despus de su uso. Si no se realiza
explcitamente, la sentencia ser cerrada cuando el gestor de la sentencia sea
liberado por PHP.
Usar una sentencia preparada no es siempre la manera ms eficiente de ejecutar
una sentencia. Una sentencia preparada ejecutada una sola vez causa ms viajes
de ida y vuelta desde el cliente al servidor que una sentencia no preparada. Es por
esta razn por lo que SELECT no se ejecuta arriba como una sentencia
preparada.
Tambin se ha de considerar el uso de la sintaxis SQL multi-INSERT de MySQL
para sentencias INSERT. Por ejemplo, multi-INSERT requiere menos viajes de ida
y vuelta entre el servidor y el cliente que la sentencia preparada mostrada arriba.
Ejemplo #4 Menos viajes de ida y vuelta usando SQL multi-INSERT
<?php
if (!$mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3), (4)")) {
echo "Fall multi-INSERT: (" . $mysqli->errno . ") " . $mysqli>error;
}
?>
= NULL;
$etiqueta_salida = NULL;
if (!$sentencia->bind_result($id_salida, $etiqueta_salida)) {
echo "Fall la vinculacin de los parmetros de salida: (" . $sentenc
ia->errno . ") " . $sentencia->error;
}
while ($sentencia->fetch()) {
printf("id = %s (%s), etiqueta = %s (%s)\n", $id_salida, gettype($id_
salida), $etiqueta_salida, gettype($etiqueta_salida));
}
?>
if (!($resultado = $sentencia->get_result())) {
echo "Fall la obtencin del conjunto de resultados: (" . $sentencia>errno . ") " . $sentencia->error;
}
var_dump($resultado->fetch_all());
?>
sqli->error;
}
if (!($sentencia = $mysqli->prepare("SELECT id, etiqueta FROM test"))) {
echo "Fall la preparacin: (" . $mysqli->errno . ") " . $mysqli>error;
}
if (!$sentencia->execute()) {
echo "Fall la ejecucin: (" . $sentencia->errno . ") " . $sentenci
a->error;
}
if (!($resultado = $sentencia->get_result())) {
echo "Fall la obtencin del conjunto de resultados: (" . $sentencia>errno . ") " . $sentencia->error;
}
for ($num_fila = ($resultado->num_rows - 1); $num_fila >= 0; $num_fila--)
{
$resultado->data_seek($num_fila);
var_dump($resultado->fetch_assoc());
}
$resultado->close();
?>
int(2)
["etiqueta"]=>
string(1) "b"
}
array(2) {
["id"]=>
int(1)
["etiqueta"]=>
string(1) "a"
}
cliente al servidor
Viajes de ida y vuelta desde el cliente al servidor, 1 + n
S, use mysqli_stmt_get_result()
cliente al servidor
con mysqli_stmt_store_result()
Conjuntos de resultados no almacenados en
buffer
Preservados al obtenerlos
de resultados
Soporta todas las sentencia SQL
Procedimientos almacenados
}
if (!$mysqli->query("CALL p(1)")) {
echo "Fall CALL: (" . $mysqli->errno . ") " . $mysqli->error;
}
if (!($resultado = $mysqli->query("SELECT id FROM test"))) {
echo "Fall SELECT: (" . $mysqli->errno . ") " . $mysqli->error;
}
var_dump($resultado->fetch_assoc());
?>
Parmetro INOUT/OUT
A los valores de los parmetros INOUT/OUT se acceden usando variables de
sesin.
Ejemplo #2 Usar variables de sesin
<?php
$mysqli = new mysqli("ejemplo.com", "usuario", "contrasea", "basedatos")
;
if ($mysqli->connect_errno) {
echo "Fall la conexin a MySQL: (" . $mysqli->connect_errno . ") " .
$mysqli->connect_error;
}
if (!$mysqli->query("DROP PROCEDURE IF EXISTS p") ||
!$mysqli->query('CREATE PROCEDURE p(OUT msg VARCHAR(50)) BEGIN SELECT
"Hola!" INTO msg; END;')) {
echo "Fall la creacin del procedimiento almacenado: (" . $mysqli>errno . ") " . $mysqli->error;
}
do {
if ($resultado = $mysqli->store_result()) {
printf("---\n");
var_dump($resultado->fetch_all());
$resultado->free();
} else {
if ($mysqli->errno) {
echo "Store failed: (" . $mysqli->errno . ") " . $mysqli>error;
}
}
} while ($mysqli->more_results() && $mysqli->next_result());
?>
array(3) {
[0]=>
array(1) {
[0]=>
string(1) "2"
}
[1]=>
array(1) {
[0]=>
string(1) "3"
}
[2]=>
array(1) {
[0]=>
string(1) "4"
}
}
Sentencias Mltiples
var_dump($resultado->fetch_all(MYSQLI_ASSOC));
$resultado->free();
}
} while ($mysqli->more_results() && $mysqli->next_result());
?>
Consideraciones de seguridad
Las funciones de la API mysqli_query() y mysqli_real_query() no establecen una
bandera de conexin necesaria para activar las multiconsultas en el servidor. Se
usa una llamada extra a la API para las sentencias mltiples para reducir la
verosimilitud de los ataques de inyecciones SQL accidentales. Un atacante puede
intentar aadir sentencias como ; DROP DATABASE mysql o ; SELECT
SLEEP(999). Si el atacante tiene xito al aadir SQL a la cadena de sentencias
pero no se usa mysqli_multi_query, el servidor no ejecutar la segunda sentencia
SQL inyectada y maliciosa.
Ejemplo #2 Inyeccin SQL
<?php
$mysqli
s");
$resultado = $mysqli->query("SELECT 1; DROP TABLE mysql.user");
if (!$resultado) {
echo "Error al ejecutar la consulta: (" . $mysqli->errno . ") " . $my
sqli->error;
}
?>
Sentencias preparadas
El uso de sentencias mltiples con sentencias preparadas no est soportado.
$mysqli->connect_error;
}
/* Recomendado: usar la API para cotrolar las configuraciones transaccion
ales */
$mysqli->autocommit(false);
/* No sern monitorizadas y reconocidas por la aplicacin y el complement
o de balance de carga */
if (!$mysqli->query('SET AUTOCOMMIT = 0')) {
echo "Fall la consulta: (" . $mysqli->errno . ") " . $mysqli->error;
}
?>
Observe que el servidor MySQL no puede reiniciar todas las sentencias. Algunoas
sentencias causan una consignacin implcia.
Metadatos
["table"]=>
string(0) ""
["orgtable"]=>
string(0) ""
["def"]=>
string(0) ""
["db"]=>
string(0) ""
["catalog"]=>
string(3) "def"
["max_length"]=>
int(1)
["length"]=>
int(1)
["charsetnr"]=>
int(63)
["flags"]=>
int(32897)
["type"]=>
int(8)
["decimals"]=>
int(0)
}
[1]=>
object(stdClass)#4 (13) {
["name"]=>
string(4) "_two"
["orgname"]=>
string(0) ""
["table"]=>
string(0) ""
["orgtable"]=>
string(0) ""
["def"]=>
string(0) ""
["db"]=>
string(0) ""
["catalog"]=>
string(3) "def"
["max_length"]=>
int(5)
["length"]=>
int(5)
["charsetnr"]=>
int(8)
["flags"]=>
int(1)
["type"]=>
int(253)
["decimals"]=>
int(31)
}
}
Sentencias preparadas
A los metadatos de un conjunto de resultados creado usando sentencias
preparadas se accede de la misma manera. Un gestor demysqli_result apropiado
es devuelto por mysqli_stmt_result_metadata().
Ejemplo #2 Metadatos de sentencias preparadas
<?php
$sentencia = $mysqli->prepare("SELECT 1 AS _one, 'Hello' AS _two FROM DUA
L");
$sentencia->execute();
$resultado = $sentencia->result_metadata();
var_dump($resultado->fetch_fields());
?>
Desbloque de tablas
Cerra controlador
Constantes predefinidas
Estas constantes estn definidas por esta extensin y estarn disponibles slo
cuando la extensin haya sido compilada con PHP, o bien sea cargada
dinmicamente en ejecucin.
MYSQLI_READ_DEFAULT_GROUP
MYSQLI_OPT_CONNECT_TIMEOUT
Comando a ejecutar cuando se conecta al servidor MySQL. Puede ser reejecutado automticamente cuando se reconecta.
MYSQLI_CLIENT_SSL
Usar SSL (protocolo de cifrado). Esta opcin no debe ser fijado por los
programas de aplicacin; se establece internamente en la biblioteca cliente
de MySQL
MYSQLI_CLIENT_COMPRESS
No permite la sistaxisdb_name.tbl_name.col_name.
MYSQLI_CLIENT_MULTI_QUERIES
MYSQLI_STMT_ATTR_PREFETCH_ROWS
MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH
MYSQLI_SET_CHARSET_NAME
MYSQLI_REPORT_INDEX
Desactivar la informacin.
MYSQLI_DEBUG_TRACE_ENABLED
Notas
mysqli::$affected_rows
mysqli_affected_rows
(PHP 5)
mysqli::$affected_rows -- mysqli_affected_rows Obtiene el nmero de filas
afectadas en la ltima operacin MySQL
Descripcin
Estilo orientado a objetos
int $mysqli->affected_rows;
}
/* Inserta filas */
$mysqli->query("CREATE TABLE Language SELECT * from CountryLanguage");
printf("Affected rows (INSERT): %d\n", $mysqli->affected_rows);
$mysqli->query("ALTER TABLE Language ADD Status int default 0");
/* Actualiza filas */
$mysqli->query("UPDATE Language SET Status=1 WHERE Percentage > 50");
printf("Affected rows (UPDATE): %d\n", $mysqli->affected_rows);
/* Elimina filas */
$mysqli->query("DELETE FROM Language WHERE Percentage < 50");
printf("Affected rows (DELETE): %d\n", $mysqli->affected_rows);
/* Selecciona todas las filas */
$result = $mysqli->query("SELECT CountryCode FROM Language");
printf("Affected rows (SELECT): %d\n", $mysqli->affected_rows);
$result->close();
/* Elimina la tabla "Language" */
$mysqli->query("DROP TABLE Language");
/* Cierra la conexin */
$mysqli->close();
?>
r());
exit();
}
/* Inserta filas */
mysqli_query($link, "CREATE TABLE Language SELECT * from CountryLanguage"
);
printf("Affected rows (INSERT): %d\n", mysqli_affected_rows($link));
mysqli_query($link, "ALTER TABLE Language ADD Status int default 0");
/* Actualiza filas */
mysqli_query($link, "UPDATE Language SET Status=1 WHERE Percentage > 50")
;
printf("Affected rows (UPDATE): %d\n", mysqli_affected_rows($link));
/* Elimina filas */
mysqli_query($link, "DELETE FROM Language WHERE Percentage < 50");
printf("Affected rows (DELETE): %d\n", mysqli_affected_rows($link));
/* Selecciona todas las filas */
$result = mysqli_query($link, "SELECT CountryCode FROM Language");
printf("Affected rows (SELECT): %d\n", mysqli_affected_rows($link));
mysqli_free_result($result);
/* Elimina la tabla "Language" */
mysqli_query($link, "DROP TABLE Language");
/* Cierra la conexin */
mysqli_close($link);
?>
mysqli::autocommit
mysqli_autocommit
(PHP 5)
mysqli::autocommit -- mysqli_autocommit Activa o desactiva las modificaciones
de la base de datos autoconsignadas
Descripcin
Estilo orientado a objetos
bool mysqli::autocommit ( bool $mode )
Valores devueltos
Devuelve TRUE en caso de xito o FALSE en caso de error.
Notas
Nota:
Esta funcin no puede aplicarse a tipos de tablas no transaccionales (como
MyISAM o ISAM).
Ejemplos
Ejemplo #1 Ejemplo de mysqli::autocommit()
Estilo orientado a objetos
<?php
$mysqli = new mysqli("localhost", "mi_usuario", "mi_contrasea", "world")
;
if (mysqli_connect_errno()) {
printf("Fallo la conexin: %s\n", mysqli_connect_error());
exit();
}
/* activar la autoconsigna */
$mysqli->autocommit(TRUE);
if ($resultado = $mysqli->query("SELECT @@autocommit")) {
$fila = $resultado->fetch_row();
printf("El estado de la autoconsigna es %s\n", $fila[0]);
$resultado->free();
}
/* Cerrar conexin */
$mysqli->close();
?>
<?php
$enlace = mysqli_connect("localhost", "mi_usuario", "mi_contrasea", "wor
ld");
if (!$enlace) {
printf("Imposible conectar a localhost. Error: %s\n", mysqli_connect_
error());
exit();
}
/* activar la autoconsigna */
mysqli_autocommit($enlace, TRUE);
if ($resultado = mysqli_query($enlace, "SELECT @@autocommit")) {
$fila = mysqli_fetch_row($resultado);
printf("El estado de la autoconsigna es %s\n", $fila[0]);
mysqli_free_result($resultado);
}
/* close connection */
mysqli_close($enlace);
?>
mysqli::begin_transaction
mysqli_begin_transaction
Descripcin
Estilo orientado a objetos (method):
public bool mysqli::begin_transaction ([ int $flags [, string $name
]] )
Valores devueltos
Devuelve TRUE en caso de xito o FALSE en caso de error.
mysqli::change_user
mysqli_change_user
(PHP 5)
mysqli::change_user -- mysqli_change_user Cambia el usuario de la conexin
de bases de datos especificada
Descripcin
Estilo orientado a objetos
bool mysqli::change_user ( string $user , string $password , string $datab
ase )
Contrasea de MySQL.
database
Valores devueltos
Devuelve TRUE en caso de xito o FALSE en caso de error.
Notas
Nota:
El uso de este comando siempre causar que la conexin a la base de datos
actual se comporte como una conexin completamente nueva,
independientemente de si la operacin se ha completado con xito. Este reinicio
incluye la realizacin de un "rollback" a cualquier transaccin activa, cerrando
todas las tablas temporales, y desbloqueando todas las tablas bloqueadas.
Ejemplos
Ejemplo #1 Ejemplo del mtodo mysqli::change_user()
Estilo orientado a objetos
<?php
/* connect database test */
$mysqli = new mysqli("localhost", "mi_usuario", "mi_contrasea", "test");
/* check connection */
if (mysqli_connect_errno()) {
printf("Error de conexin: %s\n", mysqli_connect_error());
exit();
}
/* Set Variable a */
$mysqli->query("SET @a:=1");
/* reiniciando todo, y realizando una nueva conexin a base de datos */
$mysqli->change_user("my_user", "my_password", "world");
if ($result = $mysqli->query("SELECT DATABASE()")) {
$row = $result->fetch_row();
$row = mysqli_fetch_row($result);
printf("Default database: %s\n", $row[0]);
mysqli_free_result($result);
}
if ($result = mysqli_query($link, "SELECT @a")) {
$row = mysqli_fetch_row($result);
if ($row[0] === NULL) {
printf("Value of variable a is NULL\n");
}
mysqli_free_result($result);
}
/* Cerrar conexin */
mysqli_close($link);
?>
mysqli::character_set_name
mysqli_character_set_name
(PHP 5)
mysqli::character_set_name -- mysqli_character_set_name Devuelve el juego
de caracteres predeterminado para la conexin a la base de datos
Descripcin
Estilo orientado a objetos
string mysqli::character_set_name ( void )
<?php
/* Abrir una conexin */
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* comprobar la conexin */
if (!$link) {
printf("La conexin fall: %s\n", mysqli_connect_error());
exit();
}
/* Print current character set */
$charset = mysqli_character_set_name($link);
printf ("Current character set is %s\n",$charset);
/* close connection */
mysqli_close($link);
?>
mysqli::$client_info
mysqli_get_client_info
(PHP 5)
mysqli::$client_info -- mysqli_get_client_info Obtiene informacin de la versin
cliente de MySQL
Descripcin
Estilo orientado a objetos
string $mysqli->client_info;
mysqli::$client_version
mysqli_get_client_version
(PHP 5)
mysqli::$client_version -- mysqli_get_client_version Devuelve la versin cliente
de MySQL como una cadena
Descripcin
Estilo orientado a objetos
int $mysqli->client_version;
Valores devueltos
Un nmero que representa la versin del cliente MySQL en el
formato: versin_mayor*10000 + versin_menor*100 + subversin. Por ejemplo,
4.1.0 ser devuelto como 40100.
Esto es til para determinar rpidamente la versin de la biblioteca cliente para
saber si existe alguna funcionalidad.
Ejemplos
Ejemplo #1 mysqli_get_client_version
<?php
/* No es necesaria una conexin para determinar
la versin de la biblioteca cliente de MySQL */
printf("Versin de la biblioteca cliente: %d\n", mysqli_get_client_versio
n());
?>
mysqli::close
mysqli_close
(PHP 5)
mysqli::close -- mysqli_close Cierra una conexin a base de datos previamente
abierta
Descripcin
Estilo orientado a objetos
bool mysqli::close ( void )
mysqli::commit
mysqli_commit
(PHP 5)
mysqli::commit -- mysqli_commit Consigna la transaccin actual
Descripcin
Estilo orientado a objetos
bool mysqli::commit ([ int $flags [, string $name ]] )
Descripcin
5.5.0
Ejemplos
Ejemplo #1 Ejemplo de mysqli::commit()
Estilo orientado a objetos
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* Comprobar la conexin */
if (mysqli_connect_errno()) {
printf("Fall la conexin: %s\n", mysqli_connect_error());
exit();
}
$mysqli->query("CREATE TABLE Language LIKE CountryLanguage");
/* Desactivar la autoconsigna */
$mysqli->autocommit(FALSE);
/* Inserta algunos valores */
', 11.2)");
mysqli_query($enlace, "INSERT INTO Language VALUES ('DEU', 'Swabian', 'F'
, 9.4)");
/* Consignar la transacin */
if (!mysqli_commit($enlace)) {
print("Fall la consignacin de la transaccin\n");
exit();
}
/* Cerrar la conexin */
mysqli_close($enlace);
?>
mysqli::$connect_errno
mysqli_connect_errno
(PHP 5)
mysqli::$connect_errno -- mysqli_connect_errno Devuelve el cdigo de error de
la ltima llamada
Descripcin
Estilo orientado a objetos
int $mysqli->connect_errno;
mysqli::$connect_error
mysqli_connect_error
(PHP 5)
mysqli::$connect_error -- mysqli_connect_error Devuelve una cadena con la
descripcin del ltimo error de conexin
Descripcin
Estilo orientado a objetos
string $mysqli->connect_error;
<?php
$link = @mysqli_connect('localhost', 'fake_user', 'my_password', 'my_db')
;
if (!$link) {
die('Error de conexin: ' . mysqli_connect_error());
}
?>
Notas
Advertencia
mysqli::__construct
mysqli_connect
(PHP 5)
mysqli::__construct -- mysqli_connect Abre una nueva conexin al servidor de
MySQL
Descripcin
Estilo orientado a objetos
mysqli::__construct ([ string $host =
ini_get("mysqli.default_host") [, string $username =
ini_get("mysqli.default_user") [, string $passwd =
Puede ser o un nombre de host o una direccin IP. Pasando el valor NULL o
la cadena "localhost" a este parmetro, se asumir el host local. Cuando es
posible, se usarn tuberas en lugar del protocolo TCP/IP.
Anteponer p: al host, abre una conexin
persistente. mysqli_change_user() es automticamente llamado en
conexiones abiertas desde la cach de conexiones.
username
Descripcin
5.3.0
Ejemplos
Ejemplo #1 Ejemplo de mysqli::__construct()
Estilo orientado a objetos
<?php
$mysqli = new mysqli('localhost', 'mi_usuario', 'mi_contrasea', 'mi_bd')
;
/*
* Esta es la forma OO "oficial" de hacerlo,
* AUNQUE $connect_error estaba averiado hasta PHP 5.2.9 y 5.3.0.
*/
if ($mysqli->connect_error) {
Notas
Nota:
MySQLnd siempre utiliza el juego de caracteres de idioma predeterminado. El
juego de caracteres se enva en la autentificacin/acuerdo que se produce durante
la conexin, que utilizar mysqlnd.
Libmysqlclient utiliza el juego de caracteres predeterminado definido en my.cnf o
se puede establecer llamando mysqli_options() antes de
user mysqli_real_connect(), pero despus de mysqli_init().
Nota:
Slo para la sintaxis OO: Si una conexin falla se devuelve un objeto. Para
comprobar si la conexin fall, use la funcinmysqli_connect_error() o la
propiedad mysqli->connect_error como en los ejemplos anteriores.
Nota:
Si es necesario establecer las opciones, tales como el tiempo de espera de
conexin, se debe utilizar mysqli_real_connect() en su lugar.
Nota:
Llamar al constructor sin parmetros es lo mismo que llamar a la
funcin mysqli_init().
Nota:
El error "Can't create TCP/IP socket (10106)" normalmente significa que la
directiva de configuracin variables_order no contiene el carcter E. En Windows,
si el entorno no es copiado, la variable de entorno SYSTEMROOT no estar
disponible y PHP tendr problemas al cargar Winsock.
mysqli::debug
mysqli_debug
(PHP 5)
mysqli::debug -- mysqli_debug Realiza operaciones de depuracin
Descripcin
Estilo orientado a objetos
bool mysqli::debug ( string $message )
mysqli::dump_debug_info
mysqli_dump_debug_info
(PHP 5)
Esta funcin est diseada para ser ejecutada por un usuario con el privilegio
SUPER y se utiliza para volcar la informacin de depuracin en el registro para el
servidor MySQL relacionado con la conexin.
Parmetros
link
mysqli::$errno
mysqli_errno
(PHP 5)
mysqli::$errno -- mysqli_errno Devuelve el cdigo del error de la ltima funcin
llamada
Descripcin
Estilo orientado a objetos
int $mysqli->errno;
mysqli::$error_list
mysqli_error_list
if (!$mysqli->query("SET a=1")) {
print_r($mysqli->error_list);
}
/* cerrar la conexin */
$mysqli->close();
?>
)
)
mysqli::$error
mysqli_error
(PHP 5)
mysqli::$error -- mysqli_error Devuelve una cadena que describe el ltimo error
Descripcin
Estilo orientado a objetos
string $mysqli->error;
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* Comprueba la conexin */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
if (!$mysqli->query("SET a=1")) {
printf("Errormessage: %s\n", $mysqli->error);
}
/* Cierra la conexin */
$mysqli->close();
?>
mysqli::$field_count
mysqli_field_count
(PHP 5)
mysqli::$field_count -- mysqli_field_count Devuelve el nmero de columnas para
la consulta ms reciente
Descripcin
Estilo orientado a objetos
int $mysqli->field_count;
");
mysqli_real_query($link, "SELECT * FROM friends");
if (mysqli_field_count($link)) {
/* this was a select/show or describe query */
$result = mysqli_store_result($link);
/* process resultset */
$row = mysqli_fetch_row($result);
/* free resultset */
mysqli_free_result($result);
}
/* close connection */
mysqli_close($link);
?>
mysqli::get_charset
mysqli_get_charset
Nombre de la colacin
dir
Directory the charset description was fetched from (?) or "" for built-in
character sets
min_length
Ejemplos
Ejemplo #1 mysqli::get_charset() example
Estilo orientado a objetos
<?php
$db = mysqli_init();
$db->real_connect("localhost","root","","test");
var_dump($db->get_charset());
?>
mysqli::get_client_info
mysqli_get_client_info
(PHP 5)
mysqli::get_client_info -- mysqli_get_client_info Obtiene informacin de la
biblioteca cliente de MySQL
Descripcin
Estilo orientado a objetos
string mysqli::get_client_info ( void )
mysqli_get_client_stats
[bytes_received_rset_field_meta_packet] => 0
[bytes_received_rset_row_packet] => 0
[bytes_received_prepare_response_packet] => 0
[bytes_received_change_user_packet] => 0
[packets_sent_command] => 0
[packets_received_ok] => 1
[packets_received_eof] => 0
[packets_received_rset_header] => 0
[packets_received_rset_field_meta] => 0
[packets_received_rset_row] => 0
[packets_received_prepare_response] => 0
[packets_received_change_user] => 0
[result_set_queries] => 0
[non_result_set_queries] => 0
[no_index_used] => 0
[bad_index_used] => 0
[slow_queries] => 0
[buffered_sets] => 0
[unbuffered_sets] => 0
[ps_buffered_sets] => 0
[ps_unbuffered_sets] => 0
[flushed_normal_sets] => 0
[flushed_ps_sets] => 0
[ps_prepared_never_executed] => 0
[ps_prepared_once_executed] => 0
[rows_fetched_from_server_normal] => 0
[rows_fetched_from_server_ps] => 0
[rows_buffered_from_client_normal] => 0
[rows_buffered_from_client_ps] => 0
[rows_fetched_from_client_normal_buffered] => 0
[rows_fetched_from_client_normal_unbuffered] => 0
[rows_fetched_from_client_ps_buffered] => 0
[rows_fetched_from_client_ps_unbuffered] => 0
[rows_fetched_from_client_ps_cursor] => 0
[rows_skipped_normal] => 0
[rows_skipped_ps] => 0
[copy_on_write_saved] => 0
[copy_on_write_performed] => 0
[command_buffer_too_small] => 0
[connect_success] => 1
[connect_failure] => 0
[connection_reused] => 0
[reconnect] => 0
[pconnect_success] => 0
[active_connections] => 1
[active_persistent_connections] => 0
[explicit_close] => 0
[implicit_close] => 0
[disconnect_close] => 0
[in_middle_of_command_close] => 0
[explicit_free_result] => 0
[implicit_free_result] => 0
[explicit_stmt_close] => 0
[implicit_stmt_close] => 0
[mem_emalloc_count] => 0
[mem_emalloc_ammount] => 0
[mem_ecalloc_count] => 0
[mem_ecalloc_ammount] => 0
[mem_erealloc_count] => 0
[mem_erealloc_ammount] => 0
[mem_efree_count] => 0
[mem_malloc_count] => 0
[mem_malloc_ammount] => 0
[mem_calloc_count] => 0
[mem_calloc_ammount] => 0
[mem_realloc_count] => 0
[mem_realloc_ammount] => 0
[mem_free_count] => 0
[proto_text_fetched_null] => 0
[proto_text_fetched_bit] => 0
[proto_text_fetched_tinyint] => 0
[proto_text_fetched_short] => 0
[proto_text_fetched_int24] => 0
[proto_text_fetched_int] => 0
[proto_text_fetched_bigint] => 0
[proto_text_fetched_decimal] => 0
[proto_text_fetched_float] => 0
[proto_text_fetched_double] => 0
[proto_text_fetched_date] => 0
[proto_text_fetched_year] => 0
[proto_text_fetched_time] => 0
[proto_text_fetched_datetime] => 0
[proto_text_fetched_timestamp] => 0
[proto_text_fetched_string] => 0
[proto_text_fetched_blob] => 0
[proto_text_fetched_enum] => 0
[proto_text_fetched_set] => 0
[proto_text_fetched_geometry] => 0
[proto_text_fetched_other] => 0
[proto_binary_fetched_null] => 0
[proto_binary_fetched_bit] => 0
[proto_binary_fetched_tinyint] => 0
[proto_binary_fetched_short] => 0
[proto_binary_fetched_int24] => 0
[proto_binary_fetched_int] => 0
[proto_binary_fetched_bigint] => 0
[proto_binary_fetched_decimal] => 0
[proto_binary_fetched_float] => 0
[proto_binary_fetched_double] => 0
[proto_binary_fetched_date] => 0
[proto_binary_fetched_year] => 0
[proto_binary_fetched_time] => 0
[proto_binary_fetched_datetime] => 0
[proto_binary_fetched_timestamp] => 0
[proto_binary_fetched_string] => 0
[proto_binary_fetched_blob] => 0
[proto_binary_fetched_enum] => 0
[proto_binary_fetched_set] => 0
[proto_binary_fetched_geometry] => 0
[proto_binary_fetched_other] => 0
)
mysqli_get_client_version
mysqli::$client_version
(PHP 5)
mysqli_get_client_version -- mysqli::$client_version Devuelve la versin clientes
de MySQL como valor de tipo integer
Descripcin
Estilo orientado a objetos
int $mysqli->client_version;
mysqli::get_connection_stats
mysqli_get_connection_stats
Devuelve estadsticas sobre la conexin del cliente. Disponible slo con mysqlnd.
Parmetros
link
<?php
$link = mysqli_connect();
print_r(mysqli_get_connection_stats($link));
?>
[unbuffered_sets] => 0
[ps_buffered_sets] => 0
[ps_unbuffered_sets] => 0
[flushed_normal_sets] => 0
[flushed_ps_sets] => 0
[ps_prepared_never_executed] => 0
[ps_prepared_once_executed] => 0
[rows_fetched_from_server_normal] => 0
[rows_fetched_from_server_ps] => 0
[rows_buffered_from_client_normal] => 0
[rows_buffered_from_client_ps] => 0
[rows_fetched_from_client_normal_buffered] => 0
[rows_fetched_from_client_normal_unbuffered] => 0
[rows_fetched_from_client_ps_buffered] => 0
[rows_fetched_from_client_ps_unbuffered] => 0
[rows_fetched_from_client_ps_cursor] => 0
[rows_skipped_normal] => 0
[rows_skipped_ps] => 0
[copy_on_write_saved] => 0
[copy_on_write_performed] => 0
[command_buffer_too_small] => 0
[connect_success] => 1
[connect_failure] => 0
[connection_reused] => 0
[reconnect] => 0
[pconnect_success] => 0
[active_connections] => 1
[active_persistent_connections] => 0
[explicit_close] => 0
[implicit_close] => 0
[disconnect_close] => 0
[in_middle_of_command_close] => 0
[explicit_free_result] => 0
[implicit_free_result] => 0
[explicit_stmt_close] => 0
[implicit_stmt_close] => 0
[mem_emalloc_count] => 0
[mem_emalloc_ammount] => 0
[mem_ecalloc_count] => 0
[mem_ecalloc_ammount] => 0
[mem_erealloc_count] => 0
[mem_erealloc_ammount] => 0
[mem_efree_count] => 0
[mem_malloc_count] => 0
[mem_malloc_ammount] => 0
[mem_calloc_count] => 0
[mem_calloc_ammount] => 0
[mem_realloc_count] => 0
[mem_realloc_ammount] => 0
[mem_free_count] => 0
[proto_text_fetched_null] => 0
[proto_text_fetched_bit] => 0
[proto_text_fetched_tinyint] => 0
[proto_text_fetched_short] => 0
[proto_text_fetched_int24] => 0
[proto_text_fetched_int] => 0
[proto_text_fetched_bigint] => 0
[proto_text_fetched_decimal] => 0
[proto_text_fetched_float] => 0
[proto_text_fetched_double] => 0
[proto_text_fetched_date] => 0
[proto_text_fetched_year] => 0
[proto_text_fetched_time] => 0
[proto_text_fetched_datetime] => 0
[proto_text_fetched_timestamp] => 0
[proto_text_fetched_string] => 0
[proto_text_fetched_blob] => 0
[proto_text_fetched_enum] => 0
[proto_text_fetched_set] => 0
[proto_text_fetched_geometry] => 0
[proto_text_fetched_other] => 0
[proto_binary_fetched_null] => 0
[proto_binary_fetched_bit] => 0
[proto_binary_fetched_tinyint] => 0
[proto_binary_fetched_short] => 0
[proto_binary_fetched_int24] => 0
[proto_binary_fetched_int] => 0
[proto_binary_fetched_bigint] => 0
[proto_binary_fetched_decimal] => 0
[proto_binary_fetched_float] => 0
[proto_binary_fetched_double] => 0
[proto_binary_fetched_date] => 0
[proto_binary_fetched_year] => 0
[proto_binary_fetched_time] => 0
[proto_binary_fetched_datetime] => 0
[proto_binary_fetched_timestamp] => 0
[proto_binary_fetched_string] => 0
[proto_binary_fetched_blob] => 0
[proto_binary_fetched_enum] => 0
[proto_binary_fetched_set] => 0
[proto_binary_fetched_geometry] => 0
[proto_binary_fetched_other] => 0
)
mysqli::$host_info
mysqli_get_host_info
(PHP 5)
mysqli::$host_info -- mysqli_get_host_info Devuelve una cadena que representa
el tipo de conexin usada
Descripcin
Estilo orientado a objetos
string $mysqli->host_info;
mysqli::$protocol_version
mysqli_get_proto_info
(PHP 5)
mysqli::$protocol_version -- mysqli_get_proto_info Devuelve la versin del
protocolo MySQL utilizada
Descripcin
Estilo orientado a objetos
string $mysqli->protocol_version;
Devuelve un valor entero que que representa la versin del protocolo de MySQL
utilizada por la conexin representada por el parmetro link.
Parmetros
link
/* verificar conexin */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* mostrar versin del protocolo */
printf("Protocol version: %d\n", mysqli_get_proto_info($link));
/* cerrar conexin */
mysqli_close($link);
?>
mysqli::$server_info
mysqli_get_server_info
(PHP 5)
mysqli::$server_info -- mysqli_get_server_info Devuelve la versin del servidor
MySQL
Descripcin
Estilo orientado a objetos
string $mysqli->server_info;
Devuelve una cadena que representa la versin del servidor MySQL al que est
conectada la extensin MySQLi.
Parmetros
link
/* verificar conexin */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* mostrar versin del servidor */
printf("Server version: %s\n", mysqli_get_server_info($link));
/* cerrar conexin */
mysqli_close($link);
?>
mysqli::$server_version
mysqli_get_server_version
(PHP 5)
mysqli::$server_version -- mysqli_get_server_version Devuelve la versin del
servidor MySQL como un valor entero
Descripcin
Estilo orientado a objetos
int $mysqli->server_version;
Parmetros
link
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* mostrar versin del servidor */
printf("Server version: %d\n", mysqli_get_server_version($link));
/* cerrar conexin */
mysqli_close($link);
?>
mysqli::get_warnings
mysqli_get_warnings
mysqli::$info
mysqli_info
(PHP 5)
mysqli::$info -- mysqli_info Obtiene la informacin de la ltima consulta
ejecutada
Descripcin
Estilo orientado a objetos
string $mysqli->info;
INSERT INTO...SELECT...
UPDATE ...
Nota:
Las consultas que no estn incluidas en uno de los formatos anteriores no estn
soportadas. En estas situaciones, mysqli_info()devolver una cadena vaca.
Parmetros
link
Duplicates: 0
Warnings: 0
mysqli::init
mysqli_init
(PHP 5)
mysqli::init -- mysqli_init Inicializa y devuelve un recurso para utilizarlo con
mysqli_real_connect()
Descripcin
Estilo orientado a objetos
mysqli mysqli::init ( void )
mysqli::$insert_id
mysqli_insert_id
(PHP 5)
mysqli::$insert_id -- mysqli_insert_id Devuelve el id autogenerado que se utiliz
en la ltima consulta
Descripcin
Estilo orientado a objetos
mixed $mysqli->insert_id;
exit();
}
$mysqli->query("CREATE TABLE myCity LIKE City");
$query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart
', 617000)";
$mysqli->query($query);
printf ("Nuevo registro con el id %d.\n", $mysqli->insert_id);
/* drop table */
$mysqli->query("DROP TABLE myCity");
/* close connection */
$mysqli->close();
?>
mysqli::kill
mysqli_kill
(PHP 5)
mysqli::kill -- mysqli_kill Pide al servidor poner fin a un hilo de MySQL
Descripcin
Estilo orientado a objetos
bool mysqli::kill ( int $processid )
Esta funcin se usa para pedir al servidor que ponga fin a un hilo MySQL
especificado por el parmetro processid. Este valor tiene que ser obtenido
llamando a la funcin mysqli_thread_id().
Para detener una consulta en ejecucin debe usarse el comando SQL KILL
QUERY processid.
Parmetros
link
;
/* comprobar conexin */
if (mysqli_connect_errno()) {
printf("Conexin fallida: %s\n", mysqli_connect_error());
exit();
}
/* determinar el id de nuestro hilo */
$thread_id = $mysqli->thread_id;
/* Poner fin a la conexin */
$mysqli->kill($thread_id);
/* Esto debera producir un error */
if (!$mysqli->query("CREATE TABLE myCity LIKE City")) {
printf("Error: %s\n", $mysqli->error);
exit;
}
/* cerrar conexin */
$mysqli->close();
?>
mysqli::more_results
mysqli_more_results
(PHP 5)
mysqli::more_results -- mysqli_more_results Comprueba si hay ms resultados
de una multi consulta
Descripcin
Estilo orientado a objetos
bool mysqli::more_results ( void )
mysqli::multi_query
mysqli_multi_query
(PHP 5)
mysqli::multi_query -- mysqli_multi_query Realiza una consulta a la base de
datos
Descripcin
Estilo orientado a objetos
bool mysqli::multi_query ( string $query )
= "SELECT CURRENT_USER();";
= "SELECT CURRENT_USER();";
mysqli::next_result
mysqli_next_result
(PHP 5)
mysqli::options
mysqli_options
(PHP 5)
mysqli::options -- mysqli_options Establecer opciones
Descripcin
Estilo orientado a objetos
Descripcin
MYSQLI_OPT_CONNECT_TIMEOUT
MYSQLI_OPT_LOCAL_INFILE
MYSQLI_INIT_COMMAND
MYSQLI_READ_DEFAULT_FILE
MYSQLI_READ_DEFAULT_GROUP
MYSQLI_SERVER_PUBLIC_KEY
value
Valor de la opcin.
Valores devueltos
Devuelve TRUE en caso de xito o FALSE en caso de error.
Historial de cambios
Versin
Descripcin
5.5.0
Ejemplos
Vea mysqli_real_connect().
Notas
Nota:
MySQLnd siempre utiliza el juego de caracteres de idioma predeterminado. El
juego de caracteres se enva en la autentificacin/acuerdo que se produce durante
la conexin, que utilizar mysqlnd.
Libmysqlclient utiliza el juego de caracteres predeterminado definido en my.cnf o
se puede establecer llamando mysqli_options() antes de
user mysqli_real_connect(), pero despus de mysqli_init().
mysqli::ping
mysqli_ping
(PHP 5)
mysqli::ping -- mysqli_ping Comprueba la conexin al servidor, o trata de
reconectar si se perdi la conexin
Descripcin
Estilo orientado a objetos
bool mysqli::ping ( void )
mysqli::poll
mysqli_poll
Almacena en cach conexiones. Disponible slo con mysqlnd. Este mtodo puede
usarse como esttico.
Parmetros
read
usec
mysqli::prepare
mysqli_prepare
(PHP 5)
mysqli::prepare -- mysqli_prepare Prepara una sentencia SQL para su ejecucin
Descripcin
Estilo orientado a objetos
mysqli_stmt mysqli::prepare ( string $query )
/* verificar conexin */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$city = "Amersfoort";
/* crear una sentencia preparada */
if ($stmt = mysqli_prepare($link, "SELECT District FROM City WHERE Name=?
")) {
/* ligar parmetros para marcadores */
mysqli_stmt_bind_param($stmt, "s", $city);
/* ejecutar la consulta */
mysqli_stmt_execute($stmt);
/* ligar variables de resultado */
mysqli_stmt_bind_result($stmt, $district);
/* obtener valor */
mysqli_stmt_fetch($stmt);
printf("%s is in district %s\n", $city, $district);
/* cerrar sentencia */
mysqli_stmt_close($stmt);
}
/* cerrar conexin */
mysqli_close($link);
?>
mysqli::query
mysqli_query
(PHP 5)
mysqli::query -- mysqli_query Realiza una consulta a la base de datos
Descripcin
Estilo orientado a objetos
mixed mysqli::query ( string $query [, int $resultmode =
MYSQLI_STORE_RESULT ] )
Parmetros
link
La string de la consulta.
Los datos dentro de la consulta deberan estar adecuadamente escapados.
resultmode
Historial de cambios
Versin
Descripcin
5.3.0
Ejemplos
Ejemplo #1 Ejemplo de mysqli::query()
Estilo orientado a objetos
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* comprobar la conexin */
if ($mysqli->connect_errno) {
printf("Fall la conexin: %s\n", $mysqli->connect_error);
exit();
}
/* Crear una tabla que no devuelve un conjunto de resultados */
if ($mysqli->query("CREATE TEMPORARY TABLE myCity LIKE City") === TRUE) {
printf("Se cre con xtio la tabla myCity.\n");
}
/* Consultas de seleccin que devuelven un conjunto de resultados */
if ($resultado = $mysqli->query("SELECT Name FROM City LIMIT 10")) {
printf("La seleccin devolvi %d filas.\n", $resultado->num_rows);
/* liberar el conjunto de resultados */
$resultado->close();
}
/* Si se ha de recuperar una gran cantidad de datos se emplea MYSQLI_USE_
RESULT */
if ($resultado = $mysqli->query("SELECT * FROM City", MYSQLI_USE_RESULT))
{
mysqli::real_connect
mysqli_real_connect
(PHP 5)
] )
t $flags ]]]]]]] )
Parmetros
link
Puede ser un nombre de host o una direccin IP. Si se pasa el valor NULL o
la cadena "localhost" a este parmetro, se asume el host local. Cuando sea
posible se usarn tuberas en lugar del protocolo TCP/IP.
username
Descripcin
MYSQLI_CLIENT_COMPRESS
Banderas soportadas
Nobre
Descripcin
MYSQLI_CLIENT_FOUND_ROWS
MYSQLI_CLIENT_SSL
Nota:
Por razones de seguridad la bandera MULTI_STATEMENT no est soportada
en PHP. Si quiere ejecutar mltiples consultas use la
funcin mysqli_multi_query().
Valores devueltos
Devuelve TRUE en caso de xito o FALSE en caso de error.
Ejemplos
Ejemplo #1 Ejemplo de mysqli::real_connect()
Estilo orientado a objetos
<?php
$mysqli = mysqli_init();
if (!$mysqli) {
die('Fall mysqli_init');
}
if (!$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die('Fall la configuracin de MYSQLI_INIT_COMMAND');
}
if (!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die('Fall la configuracin de MYSQLI_OPT_CONNECT_TIMEOUT');
}
if (!$mysqli->real_connect('localhost', 'mi_usuario', 'mi_contrasea', 'm
i_bd')) {
die('Error de conexin (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
echo 'xito... ' . $mysqli->host_info . "\n";
$mysqli->close();
?>
mysqli_close($enlace);
?>
Notas
Nota:
MySQLnd siempre utiliza el juego de caracteres de idioma predeterminado. El
juego de caracteres se enva en la autentificacin/acuerdo que se produce durante
la conexin, que utilizar mysqlnd.
Libmysqlclient utiliza el juego de caracteres predeterminado definido en my.cnf o
se puede establecer llamando mysqli_options() antes de
user mysqli_real_connect(), pero despus de mysqli_init().
mysqli::real_escape_string
mysqli_real_escape_string
(PHP 5)
mysqli::real_escape_string -- mysqli_real_escape_string Escapa los caracteres
especiales de una cadena para usarla en una sentencia SQL, tomando en cuenta
el conjunto de caracteres actual de la conexin
Descripcin
Estilo orientado a objetos
string mysqli::escape_string ( string $escapestr )
string mysqli::real_escape_string ( string $escapestr )
Esta funcin se usa para crear una cadena SQL legal que se puede usar en una
sentencia SQL. La cadena dada es codificada a una cadena SQL escapada,
tomando en cuenta el conjunto de caracteres actual de la conexin.
Precaucin
Seguridad: el conjunto de caracteres predeterminado
La cadena a escapar.
Los caracters codifcados son NUL (ASCII 0), \n, \r, \, ', ", y Control-Z.
Valores devueltos
Devuelve una cadena escapada.
Ejemplos
Ejemplo #1 Ejemplo de mysqli::real_escape_string()
Estilo orientado a objetos
<?php
$mysqli = new mysqli("localhost", "mi_usuario", "mi_contrasea", "world")
;
/* verificar la conexin */
if (mysqli_connect_errno()) {
printf("Fall la conexin: %s\n", mysqli_connect_error());
exit();
}
$mysqli->query("CREATE TEMPORARY TABLE miCiudad LIKE City");
$ciudad = "'s Hertogenbosch";
/* esta consulta fallar debido a que no escapa $ciudad */
if (!$mysqli->query("INSERT into miCiudad (Name) VALUES ('$ciudad')")) {
printf("Error: %s\n", $mysqli->sqlstate);
}
$ciudad = $mysqli->real_escape_string($ciudad);
/* esta consulta con $ciudad escapada funcionar */
if ($mysqli->query("INSERT into miCiudad (Name) VALUES ('$ciudad')")) {
printf("%d fila insertada.\n", $mysqli->affected_rows);
}
$mysqli->close();
?>
Notas
Nota:
Para quienes estn acostumbrados a usar mysql_real_escape_string(), se ha de
observar que el argumento demysqli_real_escape_string() difiere de lo que
espera mysql_real_escape_string(). El identificador enlace va primero
enmysqli_real_escape_string(), mientras que la cadena a escapar va primero
en mysql_real_escape_string().
mysqli::real_query
mysqli_real_query
(PHP 5)
mysqli::real_query -- mysqli_real_query Ejecuta una consulta SQL
Descripcin
Estilo orientado a objetos
bool mysqli::real_query ( string $query )
Ejecuta una sola consulta contra la base de datos cuyo resultado puede ser
recuperado o almacenado mediante las
funcionesmysqli_store_result() o mysqli_use_result().
Con el fin de determinar si una consulta dada debe devolver un conjunto de
resultados o no, ver mysqli_field_count().
Parmetros
link
mysqli::reap_async_query
mysqli_reap_async_query
mysqli::refresh
mysqli_refresh
mysqli::release_savepoint
mysqli_release_savepoint
Descripcin
Estilo orientado a objetos (method):
public bool mysqli::release_savepoint ( string $name )
Valores devueltos
Devuelve TRUE en caso de xito o FALSE en caso de error.
mysqli::rollback
mysqli_rollback
(PHP 5)
mysqli::rollback -- mysqli_rollback Revierte la transaccin actual
Descripcin
Estilo orientado a objetos
bool mysqli::rollback ([ int $flags [, string $name ]] )
Descripcin
5.5.0
Ejemplos
Ejemplo #1 Ejemplo de mysqli::rollback()
Estilo orientado a objetos
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* verificar la conexin */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* deshabilitar autocommit */
$mysqli->autocommit(FALSE);
$mysqli->query("CREATE TABLE myCity LIKE City");
$mysqli->query("ALTER TABLE myCity Type=InnoDB");
$mysqli->query("INSERT INTO myCity SELECT * FROM City LIMIT 50");
/* insertar commit */
$mysqli->commit();
/* borrar todas las filas */
$mysqli->query("DELETE FROM myCity");
if ($result = $mysqli->query("SELECT COUNT(*) FROM myCity")) {
$row = $result->fetch_row();
printf("%d rows in table myCity.\n", $row[0]);
/* Liberar resultado */
$result->close();
}
/* Revertir */
$mysqli->rollback();
if ($result = $mysqli->query("SELECT COUNT(*) FROM myCity")) {
$row = $result->fetch_row();
printf("%d rows in table myCity (after rollback).\n", $row[0]);
/* Liberar resultado */
$result->close();
}
/* Eliminar la tabla myCity */
$mysqli->query("DROP TABLE myCity");
$mysqli->close();
?>
mysqli::rpl_query_type
mysqli_rpl_query_type
(PHP 5)
mysqli::rpl_query_type -- mysqli_rpl_query_type Devuelve un tipo de consulta
RPL
Descripcin
Estilo orientado a objetos
int mysqli::rpl_query_type ( string $query )
Advertencia
mysqli::savepoint
mysqli_savepoint
name
Valores devueltos
Devuelve TRUE en caso de xito o FALSE en caso de error.
mysqli::select_db
mysqli_select_db
(PHP 5)
mysqli::select_db -- mysqli_select_db Selecciona la base de datos por defecto
para realizar las consultas
Descripcin
Estilo orientado a objetos
bool mysqli::select_db ( string $dbname )
Selecciona la base de datos por defecto que se utilizar para realizar las
consultas, en la conexin activa.
Nota:
Esta funcin debera ser usada solo para cambiar la base de datos por defecto
para la conexin. Se puede seleccionar la base de datos por defecto en el cuarto
parmetro de la funcin mysqli_connect().
Parmetros
link
dbname
$mysqli->close();
?>
mysqli::send_query
mysqli_send_query
(PHP 5)
mysqli::send_query -- mysqli_send_query Enviar una consulta y devolver
Descripcin
Estilo orientado a objetos
bool mysqli::send_query ( string $query )
mysqli::set_charset
mysqli_set_charset
if (mysqli_connect_errno()) {
printf("Fall la conexin: %s\n", mysqli_connect_error());
exit();
}
/* cambiar el conjunto de caracteres a utf8 */
if (!mysqli_set_charset($enlace, "utf8")) {
printf("Error cargando el conjunto de caracteres utf8: %s\n", mysqli_
error($enlace));
} else {
printf("Conjunto de caracteres actual: %s\n", mysqli_character_set_na
me($enlace));
}
mysqli_close($enlace);
?>
mysqli::set_local_infile_default
mysqli_set_local_infile_default
(PHP 5)
mysqli::set_local_infile_default -- mysqli_set_local_infile_default Desestablece el
gestor definido por el usuario para un comando load local infile
Descripcin
void mysqli_set_local_infile_default ( mysqli $link )
Parmetros
link
mysqli::set_local_infile_handler
mysqli_set_local_infile_handler
(PHP 5)
mysqli::set_local_infile_handler -- mysqli_set_local_infile_handler Establecer la
llamada de retorno para el comando LOAD DATA LOCAL INFILE
Descripcin
Estilo orientado a objetos
bool mysqli::set_local_infile_handler ( mysqli $link , callable $read_func
)
Ejemplos
Ejemplo #1 Ejemplo de mysqli::set_local_infile_handler()
Estilo orientado a objetos
<?php
$db = mysqli_init();
$db->real_connect("localhost","root","","test");
function callme($stream, &$buffer, $buflen, &$errmsg)
{
$buffer = fgets($stream);
echo $buffer;
// convertir a maysculas y reemplazar el delimitador "," con [TAB]
$buffer = strtoupper(str_replace(",", "\t", $buffer));
return strlen($buffer);
}
echo "Entrada:\n";
$db->set_local_infile_handler("callme");
$db->query("LOAD DATA LOCAL INFILE 'input.txt' INTO TABLE t1");
$db->set_local_infile_default();
$res = $db->query("SELECT * FROM t1");
echo "\nResultado:\n";
while ($fila = $res->fetch_assoc()) {
echo join(",", $fila)."\n";
}
?>
<?php
$db = mysqli_init();
mysqli_real_connect($db, "localhost","root","","test");
function callme($stream, &$buffer, $buflen, &$errmsg)
{
$buffer = fgets($stream);
echo $buffer;
// convertir a maysculas y reemplazar el delimitador "," con [TAB]
$buffer = strtoupper(str_replace(",", "\t", $buffer));
return strlen($buffer);
}
echo "Entrada:\n";
mysqli_set_local_infile_handler($db, "callme");
mysqli_query($db, "LOAD DATA LOCAL INFILE 'input.txt' INTO TABLE t1");
mysqli_set_local_infile_default($db);
$res = mysqli_query($db, "SELECT * FROM t1");
echo "\nResultado:\n";
while ($fila = mysqli_fetch_assoc($res)) {
echo join(",", $fila)."\n";
}
?>
42,bar
Resultado:
23,FOO
42,BAR
mysqli::$sqlstate
mysqli_sqlstate
(PHP 5)
mysqli::$sqlstate -- mysqli_sqlstate Devuelve el error SQLSTATE de la
operacin de MySQL previa
Descripcin
Estilo orientado a objetos
string $mysqli->sqlstate;
Devuelve una cadena que contiene el cdigo de error SQLSTATE del ltimo error.
El cdigo de error consiste en cinco caracteres. '00000'significa sin error. Los
valores son especificados por ANSI SQL y ODBC. Para una lista de los posibles
valores, vase http://dev.mysql.com/doc/mysql/en/error-handling.html.
Nota:
Observe que no todos los errores de MySQL estn an referenciados a
SQLSTATE. El valor HY000 (error general error) se utiliza para error no
referenciados.
Parmetros
link
/* Comprobar la conexin */
if (mysqli_connect_errno()) {
printf("Fall la conexin: %s\n", mysqli_connect_error());
exit();
}
/* La tabla City ya existe, por lo que deberamos obtener un error */
if (!mysqli_query($enlace, "CREATE TABLE City (ID INT, Name VARCHAR(30))
")) {
printf("Error - SQLSTATE %s.\n", mysqli_sqlstate($enlace));
}
mysqli_close($enlace);
?>
mysqli::ssl_set
mysqli_ssl_set
(PHP 5)
mysqli::ssl_set -- mysqli_ssl_set Usada para establece conexiones seguras
usando SSL
Descripcin
Estilo orientado a objetos
bool mysqli::ssl_set ( string $key , string $cert , string $ca , string $cap
ath , string $cipher )
Usada para establece conexiones seguras usando SSL. Se debe llamar antes
a mysqli_real_connect(). Esta funcin no har nada a menos que est habilitado el
soporte para OpenSSL.
Observe que el Controlador Nativo de MySQL no soporta SSL antes de PHP 5.3.3,
por lo que llamar a esta funcin cuando se utiliza el Controlador Nativo de MySQL
resultar en un error. El Controlador Nativo de MySQL est habilitado de forma
predeterminada en Microsoft Windows desde la versin 5.3 de PHP en adelante.
Parmetros
link
Valores devueltos
Esta funcin siempres devuelve el valor TRUE. Si la configuracin de SSL no es
correcta, mysqli_real_connect() devolver un error al intentar conectarse.
mysqli::stat
mysqli_stat
(PHP 5)
mysqli::stat -- mysqli_stat Obtiene el estado actual del sistema
Descripcin
Estilo orientado a objetos
string mysqli::stat ( void )
Threads: 1
Questions: 5340
Slow
queries: 0
Opens: 13
Flush tables: 1
Open tables: 0
19.632
Memory in use: 8496K
mysqli::store_result
mysqli_store_result
(PHP 5)
mysqli::store_result -- mysqli_store_result Transfiere un conjunto de resulados
de la ltima consulta
Descripcin
Estilo orientado a objetos
mysqli_result mysqli::store_result ([ int $option ] )
Descripcin
Valores devueltos
Devuelve un objeto de resultados almacenado en buffer o FALSE si ocurri un error.
Nota:
mysqli_store_result() devuelve FALSE en caso de que la consulta no devuelve un
conjunto de resultados (si la consulta era, por ejemplo, una sentencia INSERT).
Esta funcin tambin devuelve FALSE si la lectura del conjunto de resultados falla.
Se puede coprobar si se ha obtenido un error comprobando si mysqli_error() no
devuelve una cadena vaca, si mysqli_errno() devuelve un valor distinto de cero, o
simysqli_field_count() devuelve un valor distinto de cero. Otra posible razn para
que esta funcin devuelva FALSE despus de una llamada con xito
a mysqli_query() puede ser un conjunto de resultados demasiado grande (no es
mysqli::$thread_id
mysqli_thread_id
(PHP 5)
mysqli::$thread_id -- mysqli_thread_id Deveulve el ID del hilo de la conexin
actual
Descripcin
Estilo orientado a objetos
int $mysqli->thread_id;
Nota:
El ID del hilo es asignado basndose en una conexin-por-conexin. Por lo tanto,
si la conexin se pierde y se restablece se asignar un nuevo ID de hio.
Para destruir una consulta en ejecucin se puede usar el comando SQL KILL
QUERY id_proceso.
Parmetros
link
mysqli_close($enlace);
?>
mysqli::thread_safe
mysqli_thread_safe
(PHP 5)
mysqli::thread_safe -- mysqli_thread_safe Devuelve si la seguridad a nivel de
hilos est dada o no
Descripcin
Estilo por procedimientos
bool mysqli_thread_safe ( void )
mysqli::use_result
mysqli_use_result
(PHP 5)
mysqli::use_result -- mysqli_use_result Inicia la recuperacin de un conjunto de
resultados
Descripcin
Estilo orientado a objetos
mysqli_result mysqli::use_result ( void )
;
/* Comprobar la conexin */
if (mysqli_connect_errno()) {
printf("Fall la conexin: %s\n", mysqli_connect_error());
exit();
}
$consulta
= "SELECT CURRENT_USER();";
ld");
/* Comprobar la conexin */
if (mysqli_connect_errno()) {
printf("Fall la conexin: %s\n", mysqli_connect_error());
exit();
}
$consulta
= "SELECT CURRENT_USER();";
Amersfoort
Maastricht
Dordrecht
Leiden
Haarlemmermeer
mysqli::$warning_count
mysqli_warning_count
(PHP 5)
mysqli::$warning_count -- mysqli_warning_count Devuelve el nmero de
mensajes de advertencia de la ltima consulta para un enlace dado
Descripcin
Estilo orientado a objetos
int $mysqli->warning_count;
Valores devueltos
Cantidad de mensajes de advertencia o cero si no hubo mensajes de advertencia
Ejemplos
Ejemplo #1 Ejemplo de $mysqli->warning_count
Estilo orientado a objetos
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$mysqli->query("CREATE TABLE myCity LIKE City");
/* a remarkable city in Wales */
$query = "INSERT INTO myCity (CountryCode, Name) VALUES('GBR',
'Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch')";
$mysqli->query($query);
if ($mysqli->warning_count) {
if ($result = $mysqli->query("SHOW WARNINGS")) {
$row = $result->fetch_row();
printf("%s (%d): %s\n", $row[0], $row[1], $row[2]);
$result->close();
}
}
/* close connection */
$mysqli->close();
?>