[PHP][MySQL] Polskie znaki - dodawanie do MySQL @ tutorial

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
SubZero.
Posty: 1
Rejestracja: pt sie 15, 2008 7:21 pm

[PHP][MySQL] Polskie znaki - dodawanie do MySQL @ tutorial

Post autor: SubZero. »

Witam,

Dopiero zaczynam PHP, zacząłem od tego tutoriala:

http://www.phazm.com/notes/easy-as-pie/ ... databases/

Wszystko ładnie chodzi, tylko, że jak dodaje coś z polskimi znakami to mi wychodzą krzaczki zamiast polskich znaków.

[php]
<?php
$user="username";
$password="password";
$database="database";
$connection=mysql_connect('localhost',$user,$password);
@mysql_select_db($database) or die( "Unable to select database");

if ($_REQUEST['quote'] != "") {
if($_REQUEST['author'] != "") {
$author = $_REQUEST['author'];
} else {
$author = "Anonymous";
}
$quote = $_REQUEST['quote'];

$query="INSERT INTO `quotes` (`quote`,`author`) values ('" . mysql_real_escape_string($quote) . "','" . mysql_real_escape_string($author) . "')";

$result=mysql_query($query) or die(mysql_error());
echo("inserted quote: " . htmlentities($quote) . " by " . htmlentities($author) . " into database");
} else {
echo("<p>Please enter a quote and author</p>");
}
?>
<form action="" method="post">
<fieldset>
<legend>Add a Quote</legend>
<label for="quote">Quote:</label>
<input type="text" name="quote" id="quote" maxlength="255" />
<label for="author">Author:</label>
<input type="text" name="author" id="author" maxlength="40" />
<input type="submit" value="Add Quote" />
</fieldset>
</form>

<h2>All Quotes:</h2>
<?php

$query="SELECT `quote`, `author` FROM `quotes`";
$result=mysql_query($query) or die(mysql_error());
$num=mysql_numrows($result);
$i=0;
while ($i < $num) {
$quote = htmlentities(mysql_result($result,$i,"quote"));
$author = htmlentities(mysql_result($result,$i,"author"));
echo("<blockquote>" . $quote . " ~ <cite>" . $author . "</cite></blockquote>");
$i++;
}
mysql_close($connection);
?>
[/php]

Co ciekawe, jak dodaje do bazy MySQL przez phpMyAdmin z polskimi znakami, to wszystko jest OK.

W bazie jest "utf8_unicode_ci" (próbowałem też z utf8_bin), na stronie "utf-8".

Nawet jak wyświetlam na stronie wszystko co jest w bazie, to też są krzaczki zamiast polskich znaków, nawet jeśli dodam przez phpMyAdmin i w bazie, widzę, że jest normalnie z polskimi znakami, to na stronie są jednak krzaczki.
zakręcony
Nowy
Nowy
Posty: 127
Rejestracja: śr mar 26, 2008 7:33 pm

Re: [PHP][MySQL] Polskie znaki - dodawanie do MySQL @ tutorial

Post autor: zakręcony »

dodaj po połaczeniu z bazą

[php]<?
@mysql_query("SET NAMES utf8");
@mysql_query("SET collation_connection = utf8_unicode_ci");
@mysql_query("SET CHARACTER SET utf8");
@mysql_query(" set character_set_connection=utf8");
@mysql_query(" set character_set_client=utf8");
@mysql_query(" set character_set_database=utf8");
@mysql_query(" set character_set_results=utf8");
@mysql_query(" set character_set_server=utf8");
@mysql_query(" set collation_database=utf8_unicode_ci");
@mysql_query(" set collation_server=utf8_unicode_ci");
?>
[/php]

czasem po połaczeniu z bazą trzeba ustawić kodowanie :) co serwer to inne ustawienia ;)
ODPOWIEDZ