Avatar billede htx98i17 Professor
04. maj 2017 - 18:10 Der er 5 kommentarer og
2 løsninger

mysqlifejl: Commands out of sync; you can't run this command now

Jeg er blevet blind på denne fejl. Kan nogen hjælpe?
Fejlen kommer på linjen:
$hentundergrupper->bind_param('i',$hu_id);

-----------------------------

<?php

    //hent varekategorierne
    if($hentvaregrupper = $mysqli->prepare('SELECT id, label FROM tblstruktur WHERE relation = 0 AND visibility = 1 ORDER BY hsort ASC')) {                           
        $hentvaregrupper->execute();
        $hentvaregrupper->bind_result($hv_id,$hv_label);
    } else {
        echo($mysqli->error);
    }
   
    //hent underkategorierne
    if($hentundergrupper = $mysqli->prepare('SELECT id, label FROM tblstruktur WHERE relation = ? AND visibility = 1 ORDER BY label ASC')) {
   
    } else {
        echo($mysqli->error);
    }
   
?>

<nav>
    <ul class="col-3 padnul" >
    <?php while($hentvaregrupper->fetch()) { ?>
       
        <li>
            <a href="#<?php echo$hv_id; ?>" class="menu" ><?php echo(ucfirst($hv_label)); ?></a>
           
            <ul class="col-3 padnul" >
               
            <?php
               
                $hentundergrupper->bind_param('i',$hu_id);
                $hu_id = $hv_id;
                   
                $hentundergrupper->execute();
                $hentundergrupper->bind_result($rel_id,$rel_label);
               
               
                while($hentundergrupper->fetch()) { ?>
                    <li><a href="#<?php echo$rel_id; ?>" class="menu" ><?php echo(ucfirst($rel_label)); ?></a></li>
                   
                <?php }  ?>
               
            </ul>
           
        </li>
    <?php } ?>
    </ul>
   
    <?php
        $hentvaregrupper->close();
        $hentundergrupper->close();
    ?>
    <div class="col-6" ></div>
    <div class="col-3" ></div>
   
</nav>
Avatar billede arne_v Ekspert
04. maj 2017 - 18:45 #1
Proev at have 2 connections fremfor kun 1 connection.

En for hver query.

$mysqli1 og $mysqli2
Avatar billede htx98i17 Professor
04. maj 2017 - 18:57 #2
Det hjalp.
Men det undrer mig at det er sådan.
Avatar billede arne_v Ekspert
04. maj 2017 - 19:27 #3
$mysqli er en connection.

Saa ved execute() sendes SQL til databasen over connection og ved fetch() hentes data fra databasen via connection.

Saa du har sendt den foerste SQL kommando og er igang med at hente data fra den og saa vil du sende en ny SQL kommando og laese data inden du er faerdig med at laese de foerste data.

Med connection (vej) til databasen skal det give problemer.
Avatar billede arne_v Ekspert
04. maj 2017 - 19:28 #4
PS: Kunne du bruge en enkelt query og en LEFT JOIN?
Avatar billede htx98i17 Professor
04. maj 2017 - 19:58 #5
Det kan godt ske. Jeg er lidt rusten i det. Hvad ville du foreslå?
Avatar billede arne_v Ekspert
04. maj 2017 - 20:05 #6
Det blivet er gaet men:

SELECT t1.id, t1.label,t2.id, t2.label
FROM tblstruktur t1 LEFT JOIN  tblstruktur t2 ON (t1.id=t2.relation AND t2.visibility = 1)
WHERE t1.visibility = 1
ORDER BY t1.hsort ASC,t2.label ASC
Avatar billede htx98i17 Professor
04. maj 2017 - 20:14 #7
Det vil jeg arbejde lidt videre med. Mange tak for din hjælp.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester