01. maj 2010 - 20:00Der er
21 kommentarer og 1 løsning
mysqli_fetch_array
Hej alle sammen!!
Jeg har været i gang med at arbejde med noget mysql_fetch_array hvor jeg gerne vil have noget specielt data printet ud på skærmen.
det jeg gør er at jeg echo $resultstyle_top['style'][0]; fordi at jeg gerne vil have post nr 0 i arrayet, eftersom at arrayet starter fra 0 og op af, men det den gør er at den henter ciffer nr 0.
Er der nogen der kan give mig et svar på hvordan man henter det rigtige post?
echo $resultstyle_top['style'] udskriver den sidste post i dit recordset - og derfor udskriver echo $resultstyle_top['style'][0] det første bogstav i den sidste post ;o)
Du skal vel skrive noget à la:
while (mysql_fetch_array($esult)) { echo $resultstyle_top['style']."<br>"; }
det jeg vil er at jeg har en tabel i min DB med to poster, hvor jeg gerne vil vælge den første. jeg laver min query og mysqli_fetch_array for at lægge alle dataerne ind i et array. Jeg vil gerne spare for at lave alle de SELECT som jeg skal bruge..
Hvis jeg nu skulle vælge data nr 1 troede jeg somsagt at jeg bare kunne skrive $resultstyle_top['style'][0]; Findes der en smart løsning?
T4NK3R >> Ja måske ... men vi ved ikke noget om, hvad spørgeren egentlig spørger om. Man bruger aldrig mysql_fetch_array under MySQLI. Derimod bruger man som oftest fetch - og i sjældne tilfælde bruger nogen mysqli_fetch_array (hvorfor forstår jeg ikke, men ....).
Jeg fik blandet syntaksen for de to sammen i mit eksempel - som derfor ikke virker - men vi mangler stadig at få at vide, hvad spørgeren egentlig spørger om =)
Synes godt om
Slettet bruger
01. maj 2010 - 21:17#8
albert1234 >>
Hver xfetch henter 1 række af resultatsættet. - ikke dem allesammen i ét kæmpe multidimensionelt array. Det er derfor man pakker den ind i en while loop.
Jeg lavede jo den while løkke som kørte alle de resultater igennem. jeg ville gerne spare at lave en masse queries og lægge alle mine resultater ind i et array.. det var det jeg gjorde ved at lave en mysqli_fetch_array. men det virkede ikke helt efter hensigten.
så gjorde jeg det at jeg lavede et array ind i while løkken sådan her:
Det er fordi at jeg vil bruge flere rækker, men de skal lægges ind i en variabel hver, så jeg kan styre hvor det er jeg vil bruge de enkelte dataer..
Men ole bole, jeg kan godt se idén med det du vil have mig til at gøre.. men jeg har desværre meget svært ved at forstå det der står der inde... kan du hjælpe mig lidt?
Begge dele er jo lidt som at køre på løbehjul, når man har Bugatti stående i garagen. Når man alligevel har gang i MySQLI, kan man lige så godt bruge prepared statements =)
Ja, men jeg må stadig vide, hvad du vil, hvis jeg skal hjælpe dig med koden. Jeg kan jo ikke skrive en select, hvis jeg ikke ved, hvad du vil hente. Vis mig din nuværende select og fortæl, hvilke datatyper, du bruger i de enkelte felter
Jeg har min select oppe i toppen, hvor jeg så kører det hele jeg har igennem en while-løkke. Det jeg vil opnå er at jeg vil spare at lave en masse select bare fordi at jeg skal have et enkelt data ind i en variabel.
Med det jeg er i gang med vil jeg lave et CMS system hvor jeg bestemmer hvordan min hjemmeside skal se ud, med størrelse osv.
i min tabel i DB har jeg et id, parent, name, og style.
Id er noget der bare er auto-increment, som jeg altid har.. parent er altid 1, fordi at jeg har styles til flere sider. name er bare et navn jeg har til mit CMS hvor jeg kan ændre værdierne. og så har jeg feltet style hvor jeg skriver det ind som skal ind i mit stylesheet, på siden.
det gør jeg på den måde: jeg har variablen: $top_width = $styletopvar[0];
hvor jeg så lægger den ind i min div: <div style=\"width:".$top_width."\"></div>";
og på den måde kan jeg bestemme hvordan min side skal bygges op via mit CMS
Da du ikke smider brugerinput ind i din select, er der nu ingen fare for sql-injection, men kom bare igang med prepared statements alligevel ;o)
// Forbind til server: $mysqli = new mysqli("SERVER", "USER", "PASSWORD", "DATABASE_NAVN");
// Tjek, om forbindelsen blev oprettet: if (mysqli_connect_errno()) { // Der opstod en fejl. Skriv den til browseren: print "Kunne ikke forbinde til server:<br>\r\n".mysqli_connect_error(); exit(); }
// Opret en statement: $stmt = $mysqli->stmt_init();
// Forbered din statement: if ($stmt->prepare("SELECT `id`, `name`, `style` FROM style_page WHERE parent = 1")) {
// Eksekver din statement: $stmt->execute();
// Bind resultatet for hver kommende række til nogle variabler: $stmt->bind_result($id, $name, $style);
// Opret et array til at opbevare rækkerne i: $arr = array();
// Hent rækkerne én efter én: while ( $stmt->fetch()) { // Fyld den hentede række ned i arrayet: $arr[] = array("id"=>$id, "name"=>$name, "style"=>$style); }
// Luk din statement $stmt->close(); }
// Luk forbindelsen til serveren: $mysqli->close();
/* Nu ligger alle dine rækker i $arr. Hver række udgøres af et associativt array. */
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.