Saltar al contenido

¿Cómo ejecutar dos consultas mysql como una sola en PHP/MYSQL?

Te doy la bienvenida a nuestra web, en este lugar vas a encontrar la solucíon de lo que buscas.

Solución:

Actualizar: Aparentemente posible pasando una bandera a mysql_connect(). Consulte Ejecución de múltiples consultas SQL en una declaración con PHP Sin embargo, cualquier lector actual debe evitar usar el mysql_-clase de funciones y prefieren PDO.

No puede hacer eso usando mysql-api regular en PHP. Simplemente ejecute dos consultas. El segundo será tan rápido que no importará. Este es un ejemplo típico de microoptimización. No te preocupes por eso.

Para que conste, se puede hacer usando mysqli y mysqli_multi_query-function.

Como han respondido otros, la API de mysqli puede ejecutar consultas múltiples con la función msyqli_multi_query().

Por lo que vale, PDO admite múltiples consultas de forma predeterminada, y puede iterar sobre los múltiples conjuntos de resultados de sus múltiples consultas:

$stmt = $dbh->prepare("
    select sql_calc_found_rows * from foo limit 1 ; 
    select found_rows()");
$stmt->execute();
do 
  while ($row = $stmt->fetch()) 
    print_r($row);
  
 while ($stmt->nextRowset());

Sin embargo, la multiconsulta es ampliamente considerada como una mala idea por razones de seguridad. Si no tiene cuidado con la forma en que construye sus cadenas de consulta, puede obtener el tipo exacto de vulnerabilidad de inyección de SQL que se muestra en el clásico dibujo animado XKCD de “Little Bobby Tables”. Cuando usa una API que lo restringe a una sola consulta, eso no puede suceder.

Deberá usar la extensión MySQLi si no desea ejecutar una consulta dos veces:

if (mysqli_multi_query($link, $query))

    $result1 = mysqli_store_result($link);
    $result2 = null;

    if (mysqli_more_results($link))
    
        mysqli_next_result($link);
        $result2 = mysqli_store_result($link);
    

    // do something with both result sets.

    if ($result1)
        mysqli_free_result($result1);

    if ($result2)
        mysqli_free_result($result2);

valoraciones y reseñas

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *