Avatar billede jweber Nybegynder
29. december 2008 - 10:38 Der er 11 kommentarer og
1 løsning

Problemer med specialtegn med mysqli connection

Jeg har en mysql database hvor jeg har en tabel med typen varvhar og hvor kollation er sat til "latin1_swedish_ci".

Hvis jeg bruger mysql til at indsætte data virker det fint, men når jeg bruger mysqli, vil den ikke indsætte æ, ø og å men indsætter blot ? istedet.

Jeg har også prøvet at sætte charset til utf8 ved min mysqli_connect:

$db->set_charset("utf8");

Men det gør ikke nogen forskel.

Nogen der kan hjælpe med dette problem?
Avatar billede jensgram Nybegynder
29. december 2008 - 11:06 #1
Og indsætter du med korrekt tegnsæt? (PHP-fil hvis hard-coded, encoding hvis input)
Avatar billede jweber Nybegynder
29. december 2008 - 12:57 #2
Værdierne indsættes på følgende måde:

$query = $db->prepare("INSERT INTO customer(firstname, lastname, email, zipcode, country, street, city, sex, birthYear) VALUES (?,?,?,?,?,?,?,?,?)");

$query->bind_param("sssissssi", $this->firstname, $this->lastname, $this->email, $this->zipcode, $this->country, $this->street, $this->city, $this->sex, $this->birthYear);
$query->execute();
$query->close();

Og hvis jeg echoer f.eks. $this->street lige inden, står det fint med æ, ø og å.
Avatar billede jensgram Nybegynder
29. december 2008 - 13:25 #3
Hmm - har du prøvet at sætte charset til iso-8859-1 - eller har du mulighed for at ændre kollation i DB til UTF?
Avatar billede jweber Nybegynder
29. december 2008 - 13:46 #4
Jeg har prøvet at sætte header('Content-Type: text/html; charset=ISO-8859-1'); i toppen af siden, og jeg har prøvet at ændre kollation til UTF, både på tabellen og kolonnen, men ingen af dele har hjulpet.

Men hvis jeg indsætter det med mysql i stedet for mysqli:

$sql = "INSERT INTO ".confShop("db:tpShop")."customer(firstname, lastname, email, zipcode, country, street, city, sex, birthYear) VALUES ('".$this->firstname."', '".$this->lastname."', '".$this->email."', ".$this->zipcode.", '".$this->country."', '".$this->street."', '".$this->city."', '".$this->sex."', ".$this->birthYear.")";
mysql_query($sql);

virker det fint med æ, ø og å, så det må være noget med den connection, eller andet omkring mysqli?
Avatar billede jensgram Nybegynder
29. december 2008 - 13:48 #5
Ja, jeg kommer ihvertfald til kort. Beklager, men held og lykke.
Avatar billede jweber Nybegynder
29. december 2008 - 13:50 #6
Ja det gør jeg nemlig også, men tak for forsøget i hvert fald.

Håber stadig der er andre der kan hjælpe.
Avatar billede htx98i17 Professor
29. december 2008 - 14:27 #7
hvad er mysqli ?
Avatar billede michael_stim Ekspert
29. december 2008 - 14:30 #8
Glem ikke at gem siden i det format du vil have. I din editor, Gem som og så det format du ønsker (hvis din editor kan, altså).
Avatar billede jweber Nybegynder
29. december 2008 - 14:38 #9
Hvis jeg echoer en variabel ud på siden, lige inden det indsættes i databasen vises det findt med æ, ø og å, men hvis jeg går ind i phpMyAdmin kan jeg se at der ved indsættelsen er erstattet alle æ, ø og å med?
Avatar billede jweber Nybegynder
29. december 2008 - 15:22 #10
Det lykkedes hvis jeg ændre kollation til utf8_general og laver en utf8_encode() på variablerne inden de bliver indsat.
Avatar billede jweber Nybegynder
29. december 2008 - 15:22 #11
svar
Avatar billede olebole Juniormester
29. december 2008 - 17:18 #12
<ole>

Hvis du er nødt til at bruge utf8_encode, har du stadig tegnsætproblemer - de er bare fejet under gulvtæppet. Der er stadig noget i systemet, der arbejder i ANSI, så sandsynligheden for, at du blot har udskudt problemet er ret høj  =)

/mvh
</bole>
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

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