Avatar billede rubaek Mester
11. april 2020 - 13:15 Der er 11 kommentarer

Fejl i en WHERE ... AND ... Sætning

Jeg får fejl i denne del af et script:

$sql = "SELECT ELEV_ID, F_NAME, L_NAME, P1,P2,P3 FROM elevnavn where klasse_kode =? AND fag =?"; 
$stmt = $db->prepare($sql);
$stmt->bind_param('is',$p_klasse,$fag);

Når jeg ikke har AND og $ fag med virker det, så jeg troede jeg kunne udvælge et fag også i tillæg til en klasse, men her går det galt.

Nogle råd?
Avatar billede olsensweb.dk Ekspert
11. april 2020 - 13:25 #1
>Jeg får fejl i denne del af et script:
hvilke fejl ??
Avatar billede rubaek Mester
11. april 2020 - 13:52 #2
Denne:
Fatal error: Uncaught Error: Call to a member function bind_param() on boolean in /var/www/gmonskole.dk/public_html/tk/pages/hvis_prove_er_0.php:14 Stack trace: #0 /var/www/gmonskole.dk/public_html/tk/pages/2_valg_elever.php(38): include() #1 {main} thrown in /var/www/gmonskole.dk/public_html/tk/pages/hvis_prove_er_0.php on line 14
Avatar billede ejvindh Ekspert
11. april 2020 - 14:17 #3
Tyder på, at $fag ikke er en streng, men en boolean værdi.
Avatar billede rubaek Mester
11. april 2020 - 14:22 #4
Den henter enten dansk eller matematik ud her:
$sql = "SELECT PRODUCT_ID, type_nr, fag, TRIN, prove_navn FROM product WHERE TRIN= ?";

              $stmt = $db->prepare($sql);
         
              /* Bind parametre */
            $stmt->bind_param('i', $valg);
         
              /* St vrdier p parametrene */
              $id_klasse = $_POST['klasse_id'];

              /* Eksekver foresprgslen */
            $stmt->execute();
         
            $result = $stmt->get_result();
         
            while ($row = $result->fetch_array(MYSQLI_ASSOC)) {

                $str .= '<tr>';
                $str .= '<td><input type="radio" name="type_nr" value="'.$row["type_nr"].'" ></td>';
                $str .= '<td>'.$row["prove_navn"].'</td>'; 
                $str .= '<td>'.$row["fag"].'</td>';
                $str .= '<td><input type="hidden" name="prove_klasse" value="'.$id_klasse.'" ></td>';
                $str .= '<td><input type="hidden" name="fag" value="'.$fag.'" ></td>';
Avatar billede michael_stim Ekspert
11. april 2020 - 14:45 #5
Spörgsmålet er jo hvor du får $fag fra? Kan ikke se du sätter den variabel nogle steder.
Avatar billede michael_stim Ekspert
11. april 2020 - 14:46 #6
Er det POST variabelen eller $row arrayet du vil bruge?
Avatar billede rubaek Mester
11. april 2020 - 14:50 #7
Jeg havde tænkt at det er POST variablen.
Avatar billede michael_stim Ekspert
11. april 2020 - 14:53 #8
Jamen så må du skrive det som en POST variabel. PHP kan ikke gätte sig til hvad det er for variabel.
Avatar billede michael_stim Ekspert
11. april 2020 - 14:54 #9
Tips. Når du "debugger" din PHP-kode, så udskriv altid dine variabler. På den måde opdager man hurtigt sine fejl.
Avatar billede rubaek Mester
11. april 2020 - 21:40 #10
Jeg tror jeg er kommet videre, nu får jeg en tekst med over, men det er altid ordet "matematik" og ikke det som står ud for mit prøvenr. (1 dansk, 2 dansk, 3 dansk, 4 dansk, 5 dansk, 6 matematik, 7 matematik).
Min prøve viser dette resultat:
DanskDanskDanskDanskDanskMatematikMatematik
Så hvad gør jeg forkert?

Script:
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
              /*Brugt til test */
            $faget=$row["fag"];
            echo $faget;
             
                $str .= '<tr>';
                $str .= '<td><input type="radio" name="PRODUCT_ID" value="'.$row["PRODUCT_ID"].'" ></td>';
                $str .= '<td>'.$row["prove_navn"].'</td>'; 
                $str .= '<td>'.$row["fag"].'</td>';
                $str .= '<td><input type="hidden" name="prove_klasse" value="'.$id_klasse.'" ></td>';
                $str .= '<td><input type="hidden" name="fag" value="
               
                /* Hvad skal der står her? */
                '.$faget.'
                " ></td>';

                $str .= '</tr>';
            }
Avatar billede michael_stim Ekspert
11. april 2020 - 22:19 #11
Du overskriver jo $faget hele tiden og den vil derfor kun gemme den sidste i dit hidden felt. Ved ikke rigtigt hvad du vil opnå, men vil du have et hiddenfelt for hver fag må du jo oprette det, dynamisk eller statisk er op til dig, bare tänk på at name taggen skal väre unik.
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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