Avatar billede andreas13_fam Nybegynder
23. marts 2009 - 15:25 Der er 17 kommentarer og
1 løsning

Nybegynder hjælp til mysqli

Jeg får denne fejl:
Warning: mysqli_stmt::bind_param() [mysqli-stmt.bind-param]: Number of variables doesn't match number of parameters in prepared statement in /home/amwebdk/public_html/NetKogeren/MySQL/Vis/Opskrift_MySQL.php on line 11
koden kan ses her: http://pastebin.com/f580befef
Avatar billede erikjacobsen Ekspert
23. marts 2009 - 15:34 #1
if ($stmt = $mysqli->prepare("SELECT * FROM opskrifter WHERE id=? ORDER BY navn"))

Du behøver ikke konvertere tegnsæt for tal-værdier.
Avatar billede andreas13_fam Nybegynder
23. marts 2009 - 16:11 #2
2 spørgsmål.
1: skal der '' på når det er bind_param("s"..  ?
2: Der var vist mere end en fejl :)
Fatal error: Call to undefined method mysqli_stmt::fetch_assoc() in /home/amwebdk/public_html/NetKogeren/MySQL/Vis/Opskrift_MySQL.php on line 79
Ved du hvad det skyldes ?
Avatar billede erikjacobsen Ekspert
23. marts 2009 - 18:47 #3
Jeg forstår ikke dit nummer 1.

Nummer 2: Du skal bruge fetch_assoc på et "result", ikke på et "statement", se ex på http://dk.php.net/manual/en/mysqli-result.fetch-assoc.php
Avatar billede andreas13_fam Nybegynder
23. marts 2009 - 20:39 #4
1: skal man bruge '' når det er en string.
2: jeg kan desvære stadig ikke få det til at virke:
http://pastebin.com/d2d5428d7

Jeg for dog en anden fejl nu:
Fatal error: Call to a member function fetch_assoc() on a non-object in /home/amwebdk/public_html/NetKogeren/MySQL/Vis/Opskrift_MySQL.php on line 79
Avatar billede erikjacobsen Ekspert
23. marts 2009 - 21:11 #5
:) Det er jævnt forvirrende, når du blander databaseudtræk og html.

Din while sætning er langt væk fra din SELECT-sætning i SQL. Resultatet fra en prepared statement får du som http://dk2.php.net/manual/en/mysqli-stmt.bind-result.php

Der er et eksempel her med en streng: http://dk2.php.net/manual/en/mysqli.prepare.php
Avatar billede andreas13_fam Nybegynder
23. marts 2009 - 22:05 #6
Jeg vil da godt nok være en lidt trist bruger hvis jeg skulle læse et databaseudtræk som text/plain. Efter som webmasteren ikke må bruge html :P

Nej jeg tror på at min kode er jævnt forvirrende hvis du siger det.
Min SQL er SELECT * FROM opskrifter WHERE id=? ORDER BY navn
Som vælger alt der fx har et id 30.
Her efter vil jeg gerne tjekke om der blev fundet noget med num_rows;
Hvis der blev fundet noget skal den lave en while som indeholder et array via fetch_assoc().
Det array konverteres så til UTF-8 hvor efter det udskrives, som noget html kode som brugeren fortolker.

Det er så det med at lave en while som indeholder et array, hvilket er lidt svært for mig at løse efter som det eneste jeg har at gå efter er dette:http://dk.php.net/MySQLi_Result::fetch_assoc
og her bruger de prepare()

Jeg håber det gav en forståelse af hvad jeg gerne vil opnå.
Avatar billede erikjacobsen Ekspert
23. marts 2009 - 22:27 #7
Med prepared statements kan du bruge de links jeg gav dig.

Det med blandingen af database-halløj og html er blot, at det er bedre, i nogle tilfælde, at sørge for al databaseudtræk, samlet i variabler og arrays, inden man tænker på det html det skal være i.
Avatar billede andreas13_fam Nybegynder
23. marts 2009 - 22:42 #8
Jeg forstår virklig ikke hvad jeg kan bruge de 2 links til, den ene bruger jeg, og det virker og den anden laver variabler og ikke et array. Jeg ved ikke helt hvad jeg mere kan skrive for at komme vidre, det er nemlig ret sjældent at jeg er så meget på bar bund.
Avatar billede andreas13_fam Nybegynder
24. marts 2009 - 14:41 #9
Jeg har lavet en simpel version nu: http://pastebin.com/m3ccc29cc
fejl meddelsen er:
Fatal error: Call to undefined method mysqli_stmt::fetch_assoc() in C:\server\htdocs\TEST\mysqli.php on line 27
Avatar billede dkfire Nybegynder
25. marts 2009 - 12:17 #10
Kig her på hvordan du skal gøre.
http://dk.php.net/manual/en/mysqli-stmt.fetch.php
Der ingen metode som hedder fetch_assoc.
Avatar billede andreas13_fam Nybegynder
25. marts 2009 - 17:34 #11
ikke få at fornærme nogen men hvornår er det så at http://dk.php.net/manual/en/mysqli-result.fetch-assoc.php eksistere.
Avatar billede andreas13_fam Nybegynder
25. marts 2009 - 17:46 #12
når men nu har jeg prøvet med fetch() - sådan: http://pastebin.com/m5d493ee0
Denne gang for jeg fejlmeddelelsen:
Warning: mysqli_stmt::store_result() expecs exactly 0 parameters, 14 given in C:\server\htdocs\TEST\mysqli.php on line 23
Avatar billede dkfire Nybegynder
25. marts 2009 - 19:11 #13
Prøv nu at kigge på i hvilken forbindelse den metode er nævnt. Den hører til et result fra en mysqli query, og IKKE når du bruger prepared statements.

Og ang din fejl, så siger den jo netop hvad der er galt.
Og så kig i de eksempler hvordan du skal bruge funktionerne, for du bruger dem stadig ikke rigtig.
Avatar billede dkfire Nybegynder
25. marts 2009 - 19:14 #14
Du mangler at bruge

/* execute statement */
$stmt->execute();
og
/* bind result variables */
$stmt->bind_result($variabel, $variabel2 ,....);
Avatar billede andreas13_fam Nybegynder
25. marts 2009 - 20:37 #15
Tak så fik jeg det enlig til at virke. Jeg syntes nu stadig det er lidt underligt at man ikke kan bruge fetch_assoc() på prepare.
Men nu fik jeg det til at virke og du må derfor meget gerne ligge et svar :)
Avatar billede dkfire Nybegynder
25. marts 2009 - 21:55 #16
Det er ikke så underligt at du ikke kan bruge fetch_assoc(), da den metode ikke er en del af klassen mysqli_stmt og kan dermed ikke bruges sammen med prepared statements.

Men der kommer et svar fra mig :-)
Avatar billede andreas13_fam Nybegynder
25. marts 2009 - 22:32 #17
Når men den burde nu være en del af classen
Avatar billede dkfire Nybegynder
26. marts 2009 - 10:52 #18
Burde ??? hvorfra for du den ide ?
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

IT-JOB

Politiets Efterretningstjeneste

AI/ML udvikler i PET

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Tech Lead til Datacenter Operations

Ringkjøbing Landbobank – Nordjyske Bank

Forretningsudvikler til procesoptimering