MySQLi (MySQL mejorado) proporciona una interfaz de procedimiento y orientada a objetos para los datos y su gestión. Las funciones i extension MySQL permiten al usuario acceder a sus servidores de bases de datos. La extensión mejorada de MySQL está especialmente diseñada para funcionar con MySQL versión 4.1.13 y nuevas versiones.
Ventajas de usar declaraciones preparadas:
- Las declaraciones preparadas son altamente eficientes, especialmente para evitar ataques de inyección SQL.
- Las declaraciones preparadas se utilizan repetidamente. También reduce el tiempo de análisis y los gastos generales, ya que la preparación de la consulta se realiza solo una vez.
- La base de datos analiza, compila, optimiza la declaración de consulta y almacena el resultado.
- La vinculación de parámetros con la consulta minimiza el ancho de banda general, ya que los parámetros se envían cuando es necesario, en lugar de enviar la consulta completa.
- La vinculación de parámetros con marcadores de posición es más segura y sencilla, ya que el formato adecuado se realiza automáticamente.
- Al enviar los valores de marcador de posición a MySQL Server, sigue el protocolo cliente-servidor.
- Ejecuta una declaración de consulta particular varias veces con diferentes conjuntos de variables, lo que reduce el costo de manera efectiva.
- También ahorra en la copia y conversión de datos.
- Las declaraciones preparadas son menos propensas a errores ya que la declaración se analiza primero y luego el servidor utiliza los valores analizados.
No podemos cubrir todo en este tema, pero veamos algunas de las funciones de procedimiento importantes
de MySQLi.
1. mysqli_connect():
Como sabe, antes de realizar cualquier operación relacionada con la base de datos, debe establecer una conexión con el servidor de la base de datos MySQL. Si la conexión se establece correctamente, devuelve un identificador de recurso de conexión de base de datos. Si la conexión falla, simplemente arroja un error.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection mysqli_connect($host, $dbuser, $dbpass, $dbname); // Check connection if(mysqli_connect_error()) { echo "Connection establishing failed!"; } else { echo "Connection established successfully."; } ?>
Producción:
Connection established successfully.
2. mysqli_connect_error():
la función MySQLi arroja un error cuando la conexión no se realiza correctamente y la función almacena el error en la llamada anterior a mysqli_connect(). Si no se encuentra ningún error, devuelve NULL. Si se encuentra algún error, devuelve un mensaje de error.
Nota:
- Para probar mysqli_connect_error() , detenga el servidor MySQL en el panel de control de XAMPP y luego llame al código PHP anterior que tiene mysqli_connect().
- Si display_errors está habilitado en la configuración de PHP, puede ver un error de mysqli_connect_error() que devuelve el siguiente mensaje.
Connection failed as the target machine actively refused it.
Nota:
En buenas prácticas de programación, es mejor NO mostrar ningún mensaje de error. Para solucionar problemas, use mysqli_connect_error() para registrar el error como se menciona en el siguiente código.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection mysqli_connect($host, $dbuser, $dbpass, $dbname); // Check connection if(mysqli_connect_error()) { echo "Connection establishing failed!"; } else { echo "Connection established successfully."; } ?>
3. mysqli_select_db():
esta función mySQLi se utiliza para cambiar la base de datos predeterminada para realizar una conexión.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; $dbtest = "GFG_TEST"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); //write some code for database "GFG" // Change database to "GFG_TEST" mysqli_select_db($conn,$dbtest); // PHP code for database "GFG_TEST"... mysqli_close($conn); ?>
Resultado:
Esto cambiará la base de datos actual a GFG_TEST
4. mysqli_debug():
Todo desarrollador web debe consultar los archivos de registro para iniciar la resolución de problemas y mejorar el rendimiento de la aplicación. La función mySQLi anterior se usa en el código para todos los fines de depuración.
php
<?php //create a trace file in the localhost mysqli_debug("d:t:o,/temp/client.trace"); ?>
Nota:
el usuario debe compilar la biblioteca de cliente MySQL para utilizar la función anterior para admitir la depuración. Esta función en caso de éxito devolverá VERDADERO.
5. mysqli_close():
Esta función de MySQLi se utiliza para cerrar una base de datos previamente conectada. Esta función devolverá VERDADERO al cerrar con éxito, de lo contrario devolverá FALSO.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); //some php code if(mysqli_close($conn)) echo "Connection closed successfully."; ?>
Producción:
Connection closed successfully.
6. mysqli_prepare():
La función MySQLi anterior se utiliza para preparar una consulta MySQL para su ejecución. Devuelve un objeto de declaración para operaciones posteriores y devuelve FALSO si se produce algún error.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); // prepare the mysql query statement and bind parameters $query = mysqli_prepare("INSERT INTO items_info (item_name, description) VALUES (?, ?)"); $query->bind_param("ss", $itemname, $description); // set parameters and execute $itemname = "Shampoo"; $description = "Hairfall preventing protein shampoo"; $query->execute(); echo "New record inserted successfully"; mysqli_close(); ?>
Producción:
New record inserted successfully
7. mysqli_query():
Esta función MySQLi realiza o ejecuta la consulta en la base de datos dada.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); // performs the insert query mysqli_query($conn,"INSERT INTO items_info (item_name, description) VALUES ('Nailpolish', 'Colorbar Pink one')"); echo "Inserted successfully"; mysqli_close($conn); ?>
Producción:
Inserted successfully
8. mysqli_rollback():
La función mysqli revierte la transacción actual para la conexión de base de datos dada. Desactive la confirmación automática, ejecute la consulta, luego vuelva a confirmar la consulta y luego revierta la
transacción actual.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); // Set autocommit to off mysqli_autocommit($conn,FALSE); // performs the insert query mysqli_query($conn,"INSERT INTO items_info (item_name, description) VALUES ('Shoes', 'Adidas Brand')"); echo "Inserted successfully"; // Commit transaction mysqli_commit($conn); // Rollback transaction mysqli_rollback($conn); mysqli_close($conn); ?>
9. mysqli_fetch_row():
la función MySQLi anterior se usa para obtener una fila del conjunto de resultados como una array enumerada. Cada llamada a la función anterior devolverá la siguiente fila del conjunto de resultados. Si no se obtienen filas, devuelve FALSO.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); $query = "SELECT item_name,description from items_info"; if ($result=mysqli_query($conn,$query)) { // Fetch one and one row while ($row=mysqli_fetch_row($result)) { echo " Item name :".$row[0]." , "; echo " Description : ".$row[1]; echo nl2br (" \n "); }//end while // Free result set mysqli_free_result($result); }// end if mysqli_close($conn); ?>
Resultado:
Mostrará todas las filas con Nombre del elemento , Descripción
10. mysqli_field_count():
La función MySQLi anterior se usa para devolver el número de columnas para la consulta más reciente. Devuelve el número total de columnas en el conjunto de resultados.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); $query = "SELECT * from items_info"; mysqli_query($conn,$query); $total_columns = mysqli_field_count($conn); echo $total_columns; mysqli_close($conn); ?>
Producción:
4
11. mysqli_fetch_array():
la función MySQLi anterior se usa para obtener una fila como una array numérica asociativa o ambos tipos de array del conjunto de resultados.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); $query = "SELECT item_name,description from items_info"; $result=mysqli_query($conn,$query); // Gets the Numeric array $row=mysqli_fetch_array($result,MYSQLI_NUM); echo " Item name :".$row[0]; echo ","; echo " Description : ".$row[1]; echo nl2br (" \n "); // Gets the Associative array $row=mysqli_fetch_array($result,MYSQLI_ASSOC); echo " Item name :".$row["item_name"]; echo ","; echo " Description : ".$row["description"]; // Free the result set mysqli_free_result($result); mysqli_close($conn); ?>
Producción:
table array
12. mysqli_fetch_all():
la función MySQLi obtiene todas las filas y devuelve el conjunto de resultados como una array asociativa, una array numérica o ambas.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); $query = "SELECT item_name from items_info"; $result = mysqli_query($conn,$query); $rowcount=mysqli_num_rows($result); // Gets the Associative array $row = mysqli_fetch_all($result,MYSQLI_ASSOC); print_r($row); for($i=0;$i<$rowcount;$i++) { echo "<br> ".$row[$i]['item_name']; } // Free the result set mysqli_free_result($result); mysqli_close($conn); ?>
Nota: La función anterior solo está disponible con MySQL Native Driver.
13. mysqli_free_result():
La función MySQLi anterior libera la memoria de las filas obtenidas del conjunto de resultados.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); $query = "SELECT item_name,description from items_info"; if ($result=mysqli_query($conn,$query)) { while ($row=mysqli_fetch_row($result)) { echo " Item name :".$row[0].","; echo " Description : ".$row[1]; echo nl2br (" \n "); }//end while // Free result set mysqli_free_result($result); }// end if mysqli_close($conn); ?>
Producción:
Item name :box, Description : square shaped box in red colour
14. mysqli_num_rows():
La función MySQLi anterior se utiliza para devolver el número de filas del conjunto de resultados.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); $query = "SELECT item_name,description from items_info"; if ($result=mysqli_query($conn,$query)) { //It returns the total number of rows of the result set $rowcount=mysqli_num_rows($result); echo "Total number of rows of the result : ".$rowcount; // Free result set mysqli_free_result($result); }// end if mysqli_close($conn); ?>
Producción:
Total number of rows of the result : 8
15. mysqli_affected_rows():
La función MySQLi anterior se usa para devolver el número total de filas afectadas de la consulta SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR o REEMPLAZAR de MySQL anterior.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); $query = "SELECT * FROM items_info"; // performs the query mysqli_query($conn,$query); echo "Total affected rows : ".mysqli_affected_rows($conn); mysqli_close($conn); ?>
Producción:
Total affected rows : 8
16. mysqli_get_server_info():
La función MySQLi anterior se utiliza para devolver la versión del servidor MySQL.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); echo "The MySQL server version is : ".mysqli_get_server_info($conn); mysqli_close($conn); ?>
Producción:
The MySQL server version is : 5.6.21
17. mysqli_fetch_fields():
La función MySQLi anterior devuelve una array de objetos que contiene la información de las columnas del conjunto de resultados.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); $query = "SELECT item_name,description FROM items_info"; if ($result=mysqli_query($conn,$query)) { // Get the fields $fields=mysqli_fetch_fields($result); foreach ($fields as $value) { echo "Column name : ".$value->name."<br> "; echo "Table name : ".$value->table."<br> "; echo "Maximum length : ".$value->max_length."<br> "; echo nl2br (" \n "); } // Free result set mysqli_free_result($result); } mysqli_close($conn); ?>
Producción:
Column name : item_name Table name : items_info Maximum length : 18 Column name : description Table name : items_info Maximum length : 35
18. mysqli_error():
la función MySQLi devuelve el mensaje de error de la última llamada a la función MySQL, si existe algún error.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); if (mysqli_connect_errno()) { echo "Connection to MySQL server failed : " . mysqli_connect_error(); } $query = "INSERT INTO items_info (item_name) VALUES ('Jacket')"; // Check for error after performing the query if (!mysqli_query($conn,$query)) { echo("Error occurred : " . mysqli_error($conn)); } ?>
19. mysqli_autocommit():
Esta función MySQLi anterior se utiliza para activar/desactivar cambios u operaciones de base de datos de confirmación automática.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); mysqli_autocommit($conn,FALSE); // performs the insert query mysqli_query($conn,"INSERT INTO items_info (item_name, description) VALUES ('Clock', 'Wall clock for the living room')"); //Commit the query transaction mysqli_commit($conn); echo "Inserted successfully"; mysqli_close($conn); ?>
20. mysqli_error_list():
la función MySQLi devuelve una lista de mensajes de error para la última llamada a la función MySQL, si existe algún error.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); if (mysqli_connect_errno()) { echo "Connection to MySQL server failed : " . mysqli_connect_error(); } $query = "INSERT INTO items_info (item_name) VALUES ('Jacket')"; // Check for error after performing the query if (!mysqli_query($conn,$query)) { print_r(mysqli_error_list($conn)); } ?>
21. mysqli_begin_transaction():
La función MySQLi inicia una transacción siguiendo los comandos de MySQL. Devuelve VERDADERO en caso de ejecución exitosa, de lo contrario devuelve FALSO.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); $query = "INSERT INTO items_info (item_name, description) VALUES ('Bangles', 'Pink bangles')"; // performs the insert query mysqli_begin_transaction($conn, MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT); mysqli_query($conn,$query); mysqli_commit($conn); echo "Inserted successfully"; mysqli_close($conn); ?>
22. mysqli_change_user():
La función MySQLi se usa para cambiar el usuario de una conexión de base de datos dada a la nueva base de datos.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; $other_dbname = "OTHER_GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); // reset to new database mysqli_change_user($conn, $dbuser,$dbpass, $other_dbname); if ($result = mysqli_query($conn,"SELECT database()")) { $row = mysqli_fetch_row($result); echo "Default database : ".$row[0]; } mysqli_close($conn); ?>
Producción:
Default database : OTHER_GFG
23. mysqli_character_set_name():
La función MySQLi se utiliza para devolver el conjunto de caracteres predeterminado seleccionado para la conexión a la base de datos.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); $characterset = mysqli_character_set_name($conn); echo "Default character set is: " . $characterset; mysqli_close($conn); ?>
Producción:
Default character set is: latin1
24. mysqli_real_escape_string():
la función MySQLi se usa para escapar caracteres especiales en una string para usar en consultas MySQL.
php
<?php // Database configuration $host = "localhost"; $dbuser = "root"; $dbpass = ""; $dbname = "GFG"; // Create database connection $conn = mysqli_connect($host, $dbuser, $dbpass, $dbname); $itemname = "matress's"; $description = "Belongs to Mumbai's mall"; // escape variables $itemname = mysqli_real_escape_string($conn,$itemname); $description = mysqli_real_escape_string($conn, $description); // performs the insert query $query = "INSERT INTO items_info (item_name, description) VALUES ('$itemname','$description')"; if (!mysqli_query($conn,$query)) { die('Error: ' . mysqli_error($conn)); } echo "One record added successfully"; mysqli_close($conn); ?>
Producción:
One record added successfully
Publicación traducida automáticamente
Artículo escrito por geetanjali16 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA