sql >> Databasteknik >  >> RDS >> Mysql

Fel med PHP-kommandon ur synkronisering

I mysqli::query Om du använder MYSQLI_USE_RESULT kommer alla efterföljande anrop att returnera felkommandon osynkroniserade om du inte anropar mysqli_free_result()

När du anropar flera lagrade procedurer kan du stöta på följande fel:"Kommandon är osynkroniserade; du kan inte köra det här kommandot nu". Detta kan hända även när du använder close()-funktionen på resultatobjektet mellan anrop. problemet, kom ihåg att anropa funktionen next_result() på mysqli-objektet efter varje lagrad proceduranrop. Se exempel nedan:

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

Jag hoppas att detta kommer att hjälpa



  1. Hur undviker man flera funktionsevaler med syntaxen (func()).* i en SQL-fråga?

  2. Optimala MySQL-inställningar för frågor som levererar stora mängder data?

  3. Hur UTOM Fungerar i SQL Server

  4. SQLiteConstraintException-fel visas efter start av varje aktivitet