Avatar billede michaeltryl Seniormester
16. februar 2013 - 19:15 Der er 3 kommentarer og
1 løsning

select ud fra et array

jeg har en tabel hvor hver måned har sit eget felt.
Jeg ønsker så f.eks. at hente beløbet som står i marts måned
echo $alle_maaneder[$valg_periode];
udskriver "marts"
men den henter beløbet 0 selvom der står et andet beløb.
jeg er klar over det sikkert er min
$aar_sql5->bind_param('isss', $c, $ide, $b, $a);
den er gal med, men ved ikke lige hvad.
Giver jeg den s,b eller d istedet for i kommer den med fejl eller udskriver stadig 0

$aar_sql5 = $mysqli->prepare('SELECT indtaegt_id, ?, sum FROM indtaegter
    WHERE bruger_id= ? AND kilde=? AND aar= ?');
    /* Bind parametre */
    $aar_sql5->bind_param('isss', $c, $ide, $b, $a);
    /* Sæt værdier på parametrene */
    $c = $alle_maaneder[$valg_periode];
    $ide = $log_bruger_id;
    $b = $kilde;
    $a = $valg_aar;
    /* Eksekver forespørgslen */
    $aar_sql5->execute();
          /* Bind resultatet */
    $aar_sql5->bind_result($indtaegt_id, $maaned_kr, $sum);
    mysqli_stmt_store_result($aar_sql5);
Avatar billede olebole Juniormester
16. februar 2013 - 20:03 #1
<ole>

Du kan ikke bruge en placeholder for et tabel- eller feltnavn. Du kan strikke et prepared statement sammen, forudsat, du er helt sikker på de dele, du sætter sammen (intet brugerinput).

I pricippet kan man sikre sig på følgende måde:

function foo($field, $ide, $b, $a) {
    $fields = array(
        'januar' => 1,
        'februar' => 1,
        'marts' => 1,
        'april' => 1,
        'maj' => 1,
        'juni' => 1,
        'juli' => 1,
        'august' => 1,
        'september' => 1,
        'oktober' => 1,
        'november' => 1,
        'december' => 1
    );
    if (!$fields[$field]) return false;
   
    $mysqli = new mysqli(... ... ...);
    $sql = 'SELECT indtaegt_id, '.$field.', sum FROM indtaegter WHERE bruger_id= ? AND kilde=? AND aar= ?';
    $aar_sql5 = $mysqli->prepare($sql);
   
    /* Bind parametre */
    $aar_sql5->bind_param('iss', $ide, $b, $a);
    ... ... ...
    ... ... ...
}

Indeholder $field ikke en eksplicit tilladt værdi, returnerer funktionen false - ellers bruges den som feltnavn i SQL'en

/mvh
</bole>
Avatar billede olebole Juniormester
16. februar 2013 - 20:05 #2
- og så tror jeg ikke, jeg ville bruge ordet sum som feltnavn. Der findes en MySQL-funktion ved det navn, så det kunne meget vel smide en fejl
Avatar billede michaeltryl Seniormester
17. februar 2013 - 10:30 #3
Tak det hjalp og har også ændret sum :-)
Avatar billede michaeltryl Seniormester
04. august 2013 - 09:13 #4
Har aldrig fået lukket dette spørgsmål, så hvis du vil have point olebole, så smid et svar :)
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