Avatar billede michaeltryl Seniormester
13. februar 2013 - 10:46 Der er 13 kommentarer og
1 løsning

mysqli newbie problem

Jeg er lige startet på at lære at bruge MYSQLI
Jeg har lavet dette test script, men det virker ikke.
Den udskriver
0 - test
men burde udskrive
1 - test
da brugernavnet "test" allerede findes i databasen.
Håber meget i kan hjælpe.

$login_brugernavn = $_POST["login_brugernavn"];
$password = $_POST["login_password"];

if(!empty($login_brugernavn) && !empty($password))
{

    if ($stmt = $mysqli->prepare('SELECT bruger_id, password FROM brugere WHERE brugernavn = ?'))
    {
    $bruger_number = $stmt->num_rows;
    /* Bind parametre */
    $stmt->bind_param('i', $brugernavn);
    /* Sæt værdier på parametrene */
    $brugernavn = $_POST["login_brugernavn"];
    /* Eksekver forespørgslen */
    $stmt->execute();
    /* Bind resultatet */
    $stmt->bind_result($bruger_id, $dbkode);

    echo "$bruger_number - $login_brugernavn";
       
    }
    else
    {
        echo "fejl";
    }
Avatar billede michael_stim Ekspert
13. februar 2013 - 11:06 #1
$stmt->bind_param('i', $brugernavn);
Er brugernavn en integer?
Avatar billede michaeltryl Seniormester
13. februar 2013 - 11:16 #2
jeg har fulgt denne guide
http://www.eksperten.dk/guide/1480

og har prøvet med alle 4
*)  s: string
*)  i: integer
*)  d: double
*)  b: blob (binære data, sendt som pakker)

ingen af dem virker, men umidbart vil jeg sige at brugernavn er en string
Avatar billede tobrukDk Novice
13. februar 2013 - 11:17 #3
#1 det kunne godt være at det var tal han havde det på :P

Jeg synes også du skulle have #0 at tilføj det her så du måske kunne få af vide hvilke nogle fejl du havde :)



echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
Avatar billede michael_stim Ekspert
13. februar 2013 - 11:29 #4
#2
Det er nok s der skal bruges og ikke i.
Avatar billede michael_stim Ekspert
13. februar 2013 - 11:53 #5
Avatar billede michaeltryl Seniormester
13. februar 2013 - 14:18 #6
fik det til at virke, men vil godt lige høre om det er den rigtige løsning jeg har fundet

$stmt = $mysqli->prepare('SELECT bruger_id, password FROM brugere WHERE brugernavn = ?');
/* Bind parametre */
$stmt->bind_param('s', $login_brugernavn);
/* Sæt værdier på parametrene */
$login_brugernavn = $_POST['login_brugernavn'];
/* Eksekver forespørgslen */
$stmt->execute();
/* store result */
$stmt->store_result();
/* Bind resultatet */
$stmt->bind_result($bruger_id, $dbkode);
/* Hent rækker og udskriv data */
while ($stmt->fetch())
{
$dbkode = $dbkode;
}   
$bruger_number = $stmt->num_rows;
Avatar billede olebole Juniormester
13. februar 2013 - 15:23 #7
<ole>

Jeg ville nok skrive:

$stmt = $mysqli->prepare('SELECT bruger_id, password FROM brugere WHERE brugernavn = ?');
/* Bind parametre */
$stmt->bind_param('s', $login_brugernavn);
/* Sæt værdier på parametrene */
$login_brugernavn = $_POST['login_brugernavn'];
/* Eksekver forespørgslen */
$stmt->execute();

$stmt->store_result();
$bruger_number = $stmt->num_rows;
$stmt->free_result();

if ($bruger_number > 0) {
    /* Bind resultatet */
    $stmt->bind_result($bruger_id, $dbkode);
    /* Hent rækker og udskriv data */
    while ($stmt->fetch()) {
        echo $bruger_id . ' => ' . $dbkode;
    }   
} else {
    echo 'Ingen rækker fundet.';
}

$stmt->close();
$mysqli->close();

/mvh
</bole>
Avatar billede michaeltryl Seniormester
13. februar 2013 - 15:59 #8
tak til olebole og michael_stim
vil i begge komme med svar, så skal jeg give point
Avatar billede olebole Juniormester
13. februar 2013 - 16:06 #9
Ellers tak, jeg samler ikke point  =)
Avatar billede michael_stim Ekspert
13. februar 2013 - 16:38 #10
Heller ikke her.
Avatar billede olebole Juniormester
13. februar 2013 - 16:57 #11
Så lægger du bare selv et svar og accepterer det, hvorved tråden lukkes  =)
Avatar billede michaeltryl Seniormester
13. februar 2013 - 23:13 #12
ok mange tak for hjælpen
Avatar billede arne_v Ekspert
18. februar 2013 - 22:22 #13
Jeg forstaar ikke koden i #7.

Den vil vel ikke finde nogen raekker p.g.a.:

$stmt->free_result();

?
Avatar billede olebole Juniormester
18. februar 2013 - 22:49 #14
#13: Du har fuldstændig ret. Den skal ned lige før lukningen af statement. Det overså jeg ... thanx  =)
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