Avatar billede apromis Praktikant
06. august 2010 - 13:03 Der er 8 kommentarer og
1 løsning

mysqli giver ikke korrekt resultat

Hej allesammen.
Nedenstående kode retunere kun 15 men dataen i databasen er 15.00 (decimal 10,2 felt).
Det har meget at sige for min efterfølgende kode. Hvordan ændre jeg det ?


<?php
//$out = array();
//$i=0;
   
    if(mysqli_connect_errno()) die(mysqli_connect_error());
    if($stmt = $con->prepare('SELECT ID,fedt FROM produkter WHERE produktnavn LIKE ?')) {
        $stmt->bind_param('s', $v);
        $v = '%XL%';
        $stmt->execute();
        $stmt->store_result();
        $stmt->bind_result($ID,$fedt);
        while ($stmt->fetch()) {
        //print $ID ." " .$indhold ."\n";
        //$out[$i][0] = $ID;
        //$out[$i][1] = $fedt;
        echo $fedt;
        //$i++;
        }
        $stmt->close();
    } else {
        die($con->error);
    }
    $con->close();

?>
Avatar billede michael_stim Ekspert
06. august 2010 - 13:23 #1
format(fedt, 2) AS formatted
Avatar billede apromis Praktikant
06. august 2010 - 13:34 #2
Det virker perfekt michael.

Må jeg spørge dig om noget mere ?
vil gerne kalde det hele som en funktion (som laver array som return) :

if($stmt = $con->prepare('SELECT '$felter' FROM produkter WHERE produktnavn LIKE ?')) {

Ovenstående virker.
Men lige så snart jeg skal lave denne her :
$stmt->bind_result($ID,$fedt);
Så går det galt. Hvordan oversætter jeg det felterne til at give den en værdi som ovenstående. ?
Avatar billede michael_stim Ekspert
06. august 2010 - 13:54 #3
I og med du skulle bruge resultatet senere, skal det lige siges at det er en string der returneres med format().
Avatar billede apromis Praktikant
06. august 2010 - 15:34 #4
Jep det også helt super :)
Kunne du forstå mit andet spm ?
Avatar billede michael_stim Ekspert
06. august 2010 - 15:35 #5
Ikke helt ;o)
Avatar billede apromis Praktikant
06. august 2010 - 16:03 #6
Så prøver jeg engang mere :)

Vil lave en funktion ligenede denne her :

function selectlike($hvilket, $tabel, $hvad, $v)
{
if($stmt = $con->prepare('SELECT '$hvilket' FROM '$tabel' WHERE $hvad LIKE ?')) {
        $stmt->bind_param('s', $v);
        $stmt->execute();
        $stmt->store_result();
        $stmt->bind_result($hvilket);  ---> PROBLEM
        while ($stmt->fetch()) {
                $out[$i][0] = $ID;
        $out[$i][1] = $formatted;
        }
        $stmt->close();   
}
}

Der hvor der står problem forstår min function ikke. Hvad kan jeg gøre ved det ? Fordi nu er $ID & $formatted defineret :(
Avatar billede michael_stim Ekspert
07. august 2010 - 11:07 #7
Prøv at echoe din sql string og se hvordan den ser ud.
Avatar billede apromis Praktikant
07. august 2010 - 15:26 #8
Nu jeg ikke lige ved min computer så jeg kan teste.
Men jf den anden tråd (hvis jeg forstår det korrekt) burde jeg kunne løse den sådan her

$hvilket ="id,produktnavn";
split på komma.
        $stmt->bind_result($[$split]];

i grove træk. Tror du vil lykkes ?

Og tak for alt din hjælp :)
Avatar billede apromis Praktikant
03. maj 2011 - 20:17 #9
Lukker min ven.
skriv hvis du vil have points :)
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