mysqli bug?

Alles, was PHP betrifft, kann hier besprochen werden.

mysqli bug?

Postby combination » 10. January 2011 22:02

Hallo,

ich bin auf ein Problem gestossen, und ich denke es handelt sich hierbei um einen bug in php.
Vielleicht hab ich einfach nur etwas übersehen =P das werdet ihr mir dann schon sagen

Also.. ich möchte aus einer Datenbank auslesen, und zwar muss das Charset utf-8 sein.

Die DB und tables sind als utf-8 definiert, und auch in den config files von php und mysql ist dies explizit angeführt.
(phpinfo und phpmyadmin bestätigen dies auch)

Führe ich nun
Code: Select all
<?php
$db = new mysqli("localhost", "root", "...", "...");
if (mysqli_connect_errno()) {
  printf("Verbindung fehlgeschlagen: %s\n", mysqli_connect_error());
  exit();
}
echo var_dump($db->get_charset());
$sql = 'SELECT * FROM `dateisystem` WHERE `parent`="'.mysqli_escape_string($db, "!§$&/()=?`").'"';
$result = $db->query($sql);

echo "Betroffene Reihen: " . $result->num_rows . "<br />";
while($row = $result->fetch_array(MYSQLI_ASSOC)) {
  echo $row["name"] . "<br />";
}

 
$db->close();
?>

aus, so bekomme ich als Antwort "latin1" und "latin1_swedish_ci"

Selbst eine Lösung mittels .htaccess
Code: Select all
<Files "charset.php">
AddCharset UTF-8 .php
</Files>

funktioniert nicht.

Die einzige Lösung ist
Code: Select all
$db->set_charset("utf8");

in den jeweiligen php files..

Bug oder einfach nur etwas übersehen?
combination
 
Posts: 1
Joined: 10. January 2011 21:56

Re: mysqli bug?

Postby Xardas der Dunkle » 11. January 2011 07:25

Das ist kein Bug ... die MySQL Connection muss explizit auf UTF-8 gesetzt werden.

Code: Select all
$db->query('SET NAMES \'UTF-8\'');



Code: Select all
<Files "charset.php">
AddCharset UTF-8 .php
</Files>


Was hat der Apache mit der MySQL-DB zu tun?
Damit legst du nur einen default charset für die Ausgabe der PHP Datei fest.
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www


Return to PHP

Who is online

Users browsing this forum: No registered users and 54 guests