Problema con mysqli_milti_query

  • Autor Autor yoisberjflores
  • Fecha de inicio Fecha de inicio
Y

yoisberjflores

Gamma
Programador
hola como dice el titulo tengo un problema con esa función, la cosa es que quiero hacer varios update, y los pasaba todos por una variable y al pasarlo por mysqli_milti_query se ejecuta bien pero al parecer cierra la conexión con la db, y de ahí ya ninguna otra operación con la db deja de funcionar en esa sesion, os dejo un ejemplo

PHP:
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

$query  = "UPDATE tabla SET count=count+1, fecha='0' WHERE id=12";
$query .= "UPDATE tabla SET count=count-1, rango='0' WHERE id=31";
$query .= "UPDATE tabla SET active=1 WHERE id=66";

$mysqli->multi_query($query);
//hasta aqui bien pasa todo la cosa es que desde aqui ninguna otra operacion funciona como si perdiera la conexion

$mysqli->multi_query("SELECT * FROM users WHERE id=1"); // siempre llegado a este puno no hace nada ni darme error de syntax ni nada solo regresa false

- - - Actualizado - - -

ahh otra cosa, es que necesito hacer Muchos UPDATE y por eso quería usar el multi_query, aunque no se si haci consume muchos recursos o seria lo mismo que usar un for y ejecutarlas de una en una
 
Intenta con esto colega:

PHP:
<?php 


$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 

$query  = "UPDATE tabla SET count=count+1, fecha='0' WHERE id=12"; 
$query .= "UPDATE tabla SET count=count-1, rango='0' WHERE id=31"; 
$query .= "UPDATE tabla SET active=1 WHERE id=66";
$query .= "SELECT * FROM users WHERE id=1";

if ($resultado->multi_query($query); ) {
	echo "hecho";
}else{
	echo "no realizado";
}
 
[MENTION=172807]yoisberjflores[/MENTION] En la documentacion veo algo como esto, sera que tienes ver si ya no hay resultados de la multiple query para poder ejecutar otra querys??

PHP:
<?php
    // WORKING CODE:
    $mysqli->multi_query(" Many SQL queries ; "); // OK

    while ($mysqli->next_result()) // flush multi_queries
    {
        if (!$mysqli->more_results()) break;
    }

    $mysqli->query(" SQL statement #1 ; ") // now executed!
    $mysqli->query(" SQL statement #2 ; ") // now executed!
    $mysqli->query(" SQL statement #3 ; ") // now executed!
    $mysqli->query(" SQL statement #4 ; ") // now executed!
?>
 
[MENTION=172807]yoisberjflores[/MENTION] En la documentacion veo algo como esto, sera que tienes ver si ya no hay resultados de la multiple query para poder ejecutar otra querys??

PHP:
<?php
    // WORKING CODE:
    $mysqli->multi_query(" Many SQL queries ; "); // OK

    while ($mysqli->next_result()) // flush multi_queries
    {
        if (!$mysqli->more_results()) break;
    }

    $mysqli->query(" SQL statement #1 ; ") // now executed!
    $mysqli->query(" SQL statement #2 ; ") // now executed!
    $mysqli->query(" SQL statement #3 ; ") // now executed!
    $mysqli->query(" SQL statement #4 ; ") // now executed!
?>

umm no se me habia ocurrido ya lo intento

- - - Actualizado - - -

Definitivamente si era eso, creí que el multi_query seria como el query habitual

- - - Actualizado - - -

Intenta con esto colega:

PHP:
<?php 


$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 

$query  = "UPDATE tabla SET count=count+1, fecha='0' WHERE id=12"; 
$query .= "UPDATE tabla SET count=count-1, rango='0' WHERE id=31"; 
$query .= "UPDATE tabla SET active=1 WHERE id=66";
$query .= "SELECT * FROM users WHERE id=1";

if ($resultado->multi_query($query); ) {
	echo "hecho";
}else{
	echo "no realizado";
}

haci es como lo tenia antes, si quieres pruebalo he intenta otra consulta debajo del multi_query y no se ejecutara, como dijo el amigo de abajo hay que limpiar primero
 
Atrás
Arriba