PHP MySQLi Funciones: mysqli_query y mysqli_connect
⚡ Resumen inteligente
MySQLPHP y otros métodos de acceso a bases de datos permiten que un script PHP se conecte a una base de datos, ejecute consultas y lea los resultados. Este tutorial abarca las funciones principales de mysqli, ejemplos completos de operaciones CRUD, sentencias preparadas para mayor seguridad y los métodos de acceso alternativos PDO y ODBC.

PHP tiene una rica colección de funciones integradas para manipular MySQL bases de datos.
Función PHP mysqli_connect
La función PHP mysqli_connect se utiliza para conectarse a un MySQL servidor de base de datos.
Tiene la siguiente sintaxis.
<?php $db_handle = mysqli_connect($db_server_name, $db_user_name, $db_password); ?>
AQUÍ,
- “$db_handle” es la variable de recurso de conexión de la base de datos.
- “mysqli_connect(…)” es la función para la conexión a la base de datos PHP.
- “$db_server_name” es el nombre o la dirección IP del servidor que aloja el servidor. MySQL servidor.
- “$db_user_name” es un nombre de usuario válido en el MySQL servidor.
- “$db_password” es una contraseña válida asociada a un nombre de usuario en el MySQL servidor.
Función PHP mysqli_select_db
La función mysqli_select_db se utiliza para seleccionar una base de datos.
Tiene la siguiente sintaxis.
<?php mysqli_select_db($db_handle, $database_name); ?>
AQUÍ,
- “mysqli_select_db(…)” es la función de selección de base de datos que devuelve verdadero o falso
- “$db_handle” es el enlace de conexión al servidor.
- “$database_name” es el nombre de la base de datos
Función PHP mysqli_query
La función mysqli_query se utiliza para ejecutar SQL consultas
Esta función se puede utilizar para ejecutar los siguientes tipos de consulta:
- recuadro
- Seleccionar
- Actualizar
- Eliminar
Tiene la siguiente sintaxis.
<?php mysqli_query($db_handle, $query); ?>
AQUÍ,
- “mysqli_query(…)” es la función que ejecuta las consultas SQL.
- “$db_handle” es el enlace de conexión al servidor.
- “$query” es la consulta SQL que se ejecutará
Función PHP mysqli_num_rows
La función mysqli_num_rows se utiliza para obtener la cantidad de filas devueltas de una consulta de selección.
Tiene la siguiente sintaxis.
<?php mysqli_num_rows($result); ?>
AQUÍ,
- “mysqli_num_rows(…)” es la función de conteo de filas
- “$result” es el conjunto de resultados de mysqli_query
Función PHP mysqli_fetch_array
La función mysqli_fetch_array se utiliza para obtener matrices de filas de un conjunto de resultados de consulta.
Tiene la siguiente sintaxis.
<?php mysqli_fetch_array($result); ?>
AQUÍ,
- “mysqli_fetch_array(…)” es la función para recuperar matrices de filas
- “$result” es el resultado devuelto por la función mysqli_query.
Función PHP mysqli_close
La función mysqli_close se utiliza para cerrar una conexión de base de datos abierta.
Tiene la siguiente sintaxis.
<?php mysqli_close($db_handle); ?>
AQUÍ,
- “mysqli_close(…)” es la función de PHP que cierra la conexión.
- “$db_handle” es el recurso de conexión del servidor
PHP MySQL Ejemplos de CRUD
Veamos ejemplos prácticos que aprovechan estas funciones. Este tutorial presupone conocimientos de MySQL y SQL; si estos términos no le resultan familiares, consulte nuestra MySQL y tutoriales de SQL.
Crearemos una base de datos simple llamada my_personal_contacts con una sola tabla. Conéctese a MySQL utilizando su herramienta de acceso favorita, como MySQL En Workbench o phpMyAdmin, crea una base de datos llamada my_personal_contacts y, a continuación, ejecuta el script que se muestra a continuación para crear la tabla e insertar algunos datos de ejemplo.
CREATE TABLE IF NOT EXISTS `my_contacts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `full_names` varchar(255) NOT NULL, `gender` varchar(6) NOT NULL, `contact_no` varchar(75) NOT NULL, `email` varchar(255) NOT NULL, `city` varchar(255) NOT NULL, `country` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; INSERT INTO `my_contacts` (`id`, `full_names`, `gender`, `contact_no`, `email`, `city`, `country`) VALUES (1, 'Zeus', 'Male', '111', 'zeus@olympus.mt.co', 'Agos', 'Greece'), (2, 'Anthena', 'Female', '123', 'anthena@olympus.mt.co', 'Athens', 'Greece'), (3, 'Jupiter', 'Male', '783', 'jupiter@planet.pt.co', 'Rome', 'Italy'), (4, 'Venus', 'Female', '987', 'venus@planet.pt.co', 'Mars', 'Italy');
Leer registros de la base de datos
Ahora crearemos un programa que imprima los registros de la base de datos.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $sql_stmt = "SELECT * FROM my_contacts"; // SQL select query $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Database access failed: " . mysqli_error($dbh)); $rows = mysqli_num_rows($result); // get number of rows returned if ($rows) { while ($row = mysqli_fetch_array($result)) { echo 'ID: ' . $row['id'] . '<br>'; echo 'Full Names: ' . $row['full_names'] . '<br>'; echo 'Gender: ' . $row['gender'] . '<br>'; echo 'Contact No: ' . $row['contact_no'] . '<br>'; echo 'Email: ' . $row['email'] . '<br>'; echo 'City: ' . $row['city'] . '<br>'; echo 'Country: ' . $row['country'] . '<br><br>'; } } mysqli_close($dbh); // close the database connection ?>
Al ejecutar el código anterior se obtienen los resultados que se muestran en el diagrama a continuación.
Insertar nuevos registros
Veamos ahora un ejemplo que añade un nuevo registro a nuestra tabla. El siguiente código muestra la implementación.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $sql_stmt = "INSERT INTO `my_contacts` (`full_names`,`gender`,`contact_no`,`email`,`city`,`country`)"; $sql_stmt .= " VALUES(7,8,9,10,11,12)"; $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Adding record failed: " . mysqli_error($dbh)); echo "Poseidon has been successfully added to your contacts list"; mysqli_close($dbh); // close the database connection ?>
Al ejecutar el código anterior, se mostrará el mensaje: «Poseidon se ha añadido correctamente a tu lista de contactos». Vuelve al ejemplo de consulta SELECT y recupera tus contactos de nuevo para comprobar si Poseidon se ha añadido a tu lista.
Actualizando registros
Veamos ahora un ejemplo que actualiza un registro en la base de datos. Supongamos que Poseidón ha cambiado su número de teléfono y su dirección de correo electrónico.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $sql_stmt = "UPDATE `my_contacts` SET `contact_no` = 8, `email` = 9"; $sql_stmt .= " WHERE `id` = 5"; // SQL update query $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Updating record failed: " . mysqli_error($dbh)); echo "ID number 5 has been successfully updated"; mysqli_close($dbh); // close the database connection ?>
Eliminando registros
Veamos ahora un ejemplo que elimina registros de la base de datos. Supongamos que Venus tiene una orden de alejamiento contra nosotros y debemos eliminar su información de contacto de nuestra base de datos. base de datos de CRISPR Medicine News.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $id = 4; // Venus's ID in the database $sql_stmt = "DELETE FROM `my_contacts` WHERE `id` = $id"; // SQL delete query $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Deleting record failed: " . mysqli_error($dbh)); echo "ID number $id has been successfully deleted"; mysqli_close($dbh); // close the database connection ?>
Prevención de la inyección SQL mediante sentencias preparadas
Los ejemplos CRUD anteriores construyen consultas concatenando cadenas. Cuando cualquier parte de una consulta proviene de la entrada del usuario, esto abre la puerta a la inyección SQL. Las sentencias preparadas solucionan este problema enviando la consulta y los datos por separado, de modo que la entrada nunca puede modificar la estructura de la consulta.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); $stmt = mysqli_prepare($dbh, "INSERT INTO my_contacts (full_names, email) VALUES (?, ?)"); mysqli_stmt_bind_param($stmt, "ss", $name, $email); $name = 'Poseidon'; $email = 'poseidon@sea.oc'; mysqli_stmt_execute($stmt); mysqli_stmt_close($stmt); mysqli_close($dbh); ?>
Aquí, los signos de interrogación son marcadores de posición, y `bind_param` vincula de forma segura los valores de nombre y correo electrónico. La base de datos los trata estrictamente como datos, por lo que las sentencias preparadas, disponibles tanto en mysqli como en PDO, son la forma recomendada de ejecutar cualquier consulta que utilice la entrada del usuario.
Objeto de acceso a datos PHP (PDO)
PDO es una clase que nos permite manipular diferentes motores de bases de datos como MySQL, PostgreSQLy MS SQL Server utilizando la misma interfaz.
El siguiente código muestra el método de acceso a la base de datos utilizando el objeto PDO.
Nota: el código que aparece a continuación presupone conocimientos del lenguaje SQL, matrices, manejo de excepciones y el bucle foreach.
<?php try { $pdo = new PDO("mysql:host=localhost;dbname=my_personal_contacts", 'root', 'melody'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->exec('SET NAMES "utf8"'); $sql_stmt = "SELECT * FROM `my_contacts`"; $result = $pdo->query($sql_stmt); $result->setFetchMode(PDO::FETCH_ASSOC); $data = array(); foreach ($result as $row) { $data[] = $row; } print_r($data); } catch (PDOException $e) { echo $e->getMessage(); } ?>
AQUÍ,
- “try{…}catch{…}” es el bloque de manejo de excepciones
- “$pdo = new PDO(“mysql…” crea una instancia del objeto PDO y pasa el controlador de la base de datos, los nombres del servidor y de la base de datos, el ID de usuario y la contraseña.
- “$pdo->setAttribute…” establece el modo de error de PDO para lanzar excepciones.
- “$pdo->exec('SET NAMES…') establece el formato de codificación
Acceso a datos ODBC con PHP
ODBC es el acrónimo de Open Database Connectivity (Conectividad Abierta de Bases de Datos). Tiene la siguiente sintaxis básica.
<?php $conn = odbc_connect($dsn, $user_name, $password); ?>
AQUÍ,
- “odbc_connect” es la función integrada de PHP.
- “$dsn” es el nombre de la fuente de datos ODBC.
- “$user_name” es opcional y se utiliza para el nombre de usuario de ODBC.
- “$password” es opcional y se utiliza para la contraseña ODBC.
El siguiente ejemplo asume que está utilizando Windows y hemos creado un enlace ODBC al viento del norte Microsoft Base de datos de acceso llamada northwind.
<?php $dbh = odbc_connect('northwind', '', ''); if (!$dbh) { exit("Connection Failed: " . $dbh); } $sql_stmt = "SELECT * FROM customers"; $result = odbc_exec($dbh, $sql_stmt); if (!$result) { exit("Error accessing records"); } while (odbc_fetch_row($result)) { $company_name = odbc_result($result, "CompanyName"); $contact_name = odbc_result($result, "ContactName"); echo "<b>Company Name (Contact Person):</b> $company_name ($contact_name) <br>"; } odbc_close($dbh); ?>

