sql >> Databáze >  >> RDS >> Mysql

Nelze provést dotazy, zatímco ostatní dotazy bez vyrovnávací paměti jsou aktivní, chyba ve smyčce

Po načtení všech výsledků ve smyčce spuštění byste měli získat další sadu řádků a poté zavřete kurzor, než se znovu pokusíte o provedení uložené procedury. Zkuste toto:

foreach($data_arr AS $key => $val){
    $values = $val;
    $stmt->execute();
    $res = $stmt->fetchAll();
    $stmt->nextRowset();   // NEW: Get the next rowset after fetching your results
    $stmt->closeCursor();  // NEW: Close the cursor
}

Opravdu důležitým doplňkem je zde volání nextRowSet() . Pod kapotou PDO vrací druhou sadu řádků ke kterému potřebujete přístup před provedením druhé (a následné) uložené procedury na stejném připojení.



  1. MariaDB BENCHMARK() Vysvětleno

  2. Jak přidat pořadové číslo pro každý prvek ve skupině pomocí dotazu SQL bez dočasných tabulek

  3. slow count(*) na innoDB

  4. Laravel Nelze odstranit nebo aktualizovat nadřazený řádek:omezení cizího klíče se nezdaří