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.

  • ???? Conexión: mysqli_connect abre un enlace a la MySQL El servidor y mysqli_select_db eligen la base de datos con la que trabajar.
  • 🗃️ Consultas en ejecución: mysqli_query ejecuta sentencias INSERT, SELECT, UPDATE y DELETE en la base de datos seleccionada.
  • 📄 Resultados de la lectura: mysqli_num_rows cuenta las filas devueltas, y mysqli_fetch_array lee cada fila en una matriz para su salida.
  • 🔄 CRUD Operafunciones: En conjunto, estas funciones crean, leen, actualizan y eliminan registros, las cuatro operaciones básicas de una base de datos.
  • 🛡️ Declaraciones preparadas: Vincular valores con sentencias preparadas evita la inyección SQL, a diferencia de construir consultas concatenando la entrada del usuario.
  • 🧩 PDO y ODBC: PDO ofrece una interfaz para muchos motores de bases de datos, mientras que ODBC se conecta a fuentes como Microsoft Acceso.
  • 🤖 Asistencia de IA: Las herramientas de IA pueden convertir código mysqli heredado a PDO con sentencias preparadas y depurar errores de conexión.

PHP MySQL Acceso a la base de datos

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.

PHP: MySQL Funciones

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);
?>

Preguntas Frecuentes

mysqli funciona solo con MySQL y ofrece estilos tanto procedimentales como orientados a objetos. PDO funciona con múltiples bases de datos a través de una única interfaz y admite marcadores de posición con nombre. Ambos admiten sentencias preparadas; PDO es más portable entre diferentes motores.

No. La extensión original mysql_* se eliminó en PHP 7. En su lugar, utilice mysqli o PDO. Ambas se mantienen activamente, admiten sentencias preparadas y protegen contra los riesgos de inyección de la antigua extensión.

Captura el error y muestra al usuario un mensaje genérico mientras registras los detalles de forma privada. No muestres la salida de mysqli_error a los visitantes, ya que puede revelar nombres de tablas y su estructura, información útil para un atacante.

Sí. Pega el script mysqli y AI podrá reescribirlo usando PDO, reemplazar las consultas concatenadas con parámetros vinculados y agregar manejo de errores try-catch. RevRevisa los marcadores de posición y prueba cada consulta después.

Sí. Comparta el error y su código de conexión, y la IA podrá detectar credenciales incorrectas, un host o puerto defectuoso, una base de datos faltante o un controlador deshabilitado, y luego sugerir la configuración correcta para probar.

Resumir este post con: