sql >> Database teknologi >  >> RDS >> Mysql

PHP-kommandoer ude af synkronisering

I mysqli::query Hvis du bruger MYSQLI_USE_RESULT vil alle efterfølgende kald returnere fejlkommandoer ude af synkronisering, medmindre du kalder mysqli_free_result()

Når du kalder flere lagrede procedurer, kan du løbe ind i følgende fejl:"Kommandoer ude af synkronisering; du kan ikke køre denne kommando nu". Dette kan ske, selv når du bruger funktionen close() på resultatobjektet mellem opkald. Sådan rettes problemet, husk at kalde funktionen next_result() på mysqli-objektet efter hvert lagret procedurekald. Se eksempel nedenfor:

<?php
// New Connection
$db = new mysqli('localhost','user','pass','database');

// Check for errors
if(mysqli_connect_errno()){
 echo mysqli_connect_error();
}

// 1st Query
$result = $db->query("call getUsers()");
if($result){
     // Cycle through results
    while ($row = $result->fetch_object()){
        $user_arr[] = $row;
    }
    // Free result set
    $result->close();
    $db->next_result();
}

// 2nd Query
$result = $db->query("call getGroups()");
if($result){
     // Cycle through results
    while ($row = $result->fetch_object()){
        $group_arr[] = $row;
    }
     // Free result set
     $result->close();
     $db->next_result();
}
else echo($db->error);

// Close connection
$db->close();
?>

Jeg håber, at dette vil hjælpe



  1. Sådan får du første og sidste dag i forrige måned (med tidsstempel) i SQL Server

  2. SIN() Funktion i Oracle

  3. Brugerdefineret BESTILLING EFTER Forklaring

  4. Hvordan konverteres tal til streng i Oracle?