(PHP 4, PHP 5)
mysql_query — Enviar una consulta MySQL
Esta extensión fue declarada obsoleta en PHP 5.5.0 y eliminada en PHP 7.0.0. En su lugar debería utilzarse las extensiones MySQLi o PDO_MySQL. Véase también la guía MySQL: elegir una API y sus P+F relacionadas para más información. Alternatives to this function include:
mysql_query() envía una única consulta (no hay soporte para
múltiples consultas) a la base de datos
actualmente activa en el servidor asociado con el
identificador de enlace especificado por link_identifier
.
query
Una consulta SQL
El string de la consulta no debería terminar con un punto y coma. Los datos insertados en la consulta deberían estar correctamente escapados.
link_identifier
La conexión MySQL. Si no
se especifica el identificador de enlace, se asume el último enlace abierto
por mysql_connect(). Si no se encuentra este enlace, se
intentará crear un nuevo enlace como si mysql_connect() hubiese sido invocada
sin argumentos. Si no se encuentra o establece ninguna conexión, se genera un error
de nivel E_WARNING
.
Para SELECT, SHOW, DESCRIBE, EXPLAIN y otras sentencias que retornan un conjunto de resultados,
mysql_query()
devuelve un resource en caso de éxito, o FALSE
en caso de
error.
Para otros tipos de sentencias SQL, tales como INSERT, UPDATE, DELETE, DROP, etc,
mysql_query() devuelve TRUE
en caso de éxito
o FALSE
en caso de error.
El conjunto de resultados devuelto debería ser pasado a mysql_fetch_array(), y otras funciones para manejar las tablas del resultado, para acceder a los datos retornados.
Use mysql_num_rows() para averiguar cuántas filas fueron devueltas por la sentencia SELECT, o mysql_affected_rows() para averiguar cuántas filas fueron afectadas por las sentencias DELETE, INSERT, REPLACE, o UPDATE.
mysql_query() también fallará y retornará FALSE
si el usuario no está autorizado para acceder a la/s tabla/s a la/s que hace
referencia la consulta.
Ejemplo #1 Consulta inválida
La siguiente consulta no es sintácticamente válida, por lo que
mysql_query() fallará y retornará FALSE
.
<?php
$resultado = mysql_query('SELECT * WHERE 1=1');
if (!$resultado) {
die('Consulta no válida: ' . mysql_error());
}
?>
Ejemplo #2 Consulta válida
La siguiente consulta es válida, por lo que mysql_query() retornará un resource.
<?php
// Lo siguiente podría ser proporcionado por un usuario, como por ejemplo
$nombre = 'fred';
$apellido = 'fox';
// Formular la consulta
// Este es el mejor método para formular una consulta SQL
// Para más ejemplos, consulte mysql_real_escape_string()
$consulta = sprintf("SELECT nombre, apellido, direccion, edad FROM amigos
WHERE nombre='%s' AND apellido='%s'",
mysql_real_escape_string($nombre),
mysql_real_escape_string($apellido));
// Ejecutar la consulta
$resultado = mysql_query($consulta);
// Comprobar el resultado
// Lo siguiente muestra la consulta real enviada a MySQL, y el error ocurrido. Útil para depuración.
if (!$resultado) {
$mensaje = 'Consulta no válida: ' . mysql_error() . "\n";
$mensaje .= 'Consulta completa: ' . $consulta;
die($mensaje);
}
// Usar el resultado
// Si se intenta imprimir $resultado no será posible acceder a la información del recurso
// Se debe usar una de las funciones de resultados de mysql
// Consulte también mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
while ($fila = mysql_fetch_assoc($resultado)) {
echo $fila['nombre'];
echo $fila['apellido'];
echo $fila['direccion'];
echo $fila['edad'];
}
// Liberar los recursos asociados con el conjunto de resultados
// Esto se ejecutado automáticamente al finalizar el script.
mysql_free_result($resultado);
?>