Splitte MySQLi forespørgsel og resultat

Tags:    php mysqli

Hej
Nu er jeg lang om længe begyndt at studere MySQLi lidt nærmere og har besluttet mig for at konvertere min egen hjemmeside fra MySQL-API til MySQLi-API, inden den frigives på internettet. Men er kommet lidt i tvivl, da jeg har placeret selve forespørgslen til databasen øverst i min fil, som vist nedenfor.
Fold kodeboks ind/udPHP kode 

Det jeg har, indtil videre, har blot hentet det jeg skal bruge, og gemt det i variabler, men jeg mangler jo at skrive det ud. Men når jeg beder den om at udskrive $tekst længere nede på siden, så går der noget galt. Vi er jo enige om at jeg ikke har afsluttet min forbindelse til databasen endnu, fordi jeg ikke har skrevet $stmt->close();. Men hvorfor vil den så ikke udskrive teksten til siden? Jeg har indsat echo $tekst; længere nede på siden. Jeg tvivler på at jeg får noget ud af at flytte mit øverste if/else-statement, som definerer værdien af $page_id.
Jeg ved at min løsning virkede med MySQL-API, fordi jeg rent faktisk fik tekst frem.
i MySQL-API gjorde jeg således:
Fold kodeboks ind/udPHP kode 

Skal jeg virkelige flyttet hele mit if/else-statement ned i body for at den vil opføre sig ordentligt?



5 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Så vidt jeg kan se mangler du:
while ($stmt->fetch())

Jeg plejer at gøre således
<?php
$stmt = $db->prepare("SELECT...");
$stmt->bind_param();
$stmt->execute();
$stmt->bind_result($tekst, $meretekst);
while ($stmt->fetch()) {
?>

Her udskriver jeg teksten <?php echo $tekst;?>, og her noget mere <?php echo $meretekst;?>

Og til slut laver jeg så følgende

<?php
}
$stmt->close();
?>

Prøv at se om det virker?



Indlæg senest redigeret d. 06.09.2012 15:39 af Bruger #14602
$mysqli->set_charset("utf8");

Jeg sidder faktisk med præcis samme problem, og har netop oprettet tråden
http://www.udvikleren.dk/forum/38753/aeoeaa-erstattes-med--/

Der er nogle gode svar som virkede for mig



Ja, nu virker det. Forstår bare ikke hvad det while-loop skal være der for, når det slet ikke skal bruges.
Men nu er der et lille problem der gør at den ikke vil arbejde med ÆØÅ. Min database er sat til utf8_danish_ci, og i MySQL-API havde jeg mysql_set_charset('utf8'); for at ordne problemet.
Lige nu har jeg et 45-grader roteret firkant med et spørgsmålstegn i. Det ser således ud: Webl?sninger, eller næsten, mangler blot firkanten
Hvordan løser jeg det?
Brugte link jeg fandt til manualen og har indsat følge if/else-statement:
Fold kodeboks ind/udPHP kode 

Og den skriver Error loading character set utf8:. Så der må være et eller andet galt.
mysqli::set_charset



Indlæg senest redigeret d. 06.09.2012 15:54 af Bruger #17072
Ja, $mysqli->set_charset("utf8"); løste mit problem. Nu virker det hele.



Du behøver ikke while($stmt->fetch()) {...} hvis du kun har planer om at hente een række.

Derimod hvis du har planer om at skulle hente flere rækker kan du benytte:
Fold kodeboks ind/udKode 


Husk at hente al data, før du udskriver browser.



Indlæg senest redigeret d. 06.09.2012 23:51 af Bruger #10216
t