问题描述
当我从mySQL数据库返回一行时,得到一个?而不是某些字符,例如:ò,à 等等.我的mysql行和表设置为utf8_unicode_ci,所以我认为数据库正确存储了它,但是php没有正确返回它.
When i return a row from my mySQL database, I get a ? instead of some characters eg:ò, à etc. My mysql row and table are set to utf8_unicode_ci, so I think the database is storing it correctly but php isnt returning it correctly.
认为它与mysql_set_charset
有关,但无法使其正常工作.任何帮助将不胜感激!
Think it has something to do with mysql_set_charset
but cant get it to work properly. Any help would be greatly appreciated!!
<?php
if($row = mysql_fetch_assoc(queryDb("SELECT * FROM customer WHERE uuid='".$_COOKIE['uuid']."'")))
{
$first_name = $row['first_name'];
$last_name = $row['last_name'];
$gender = $row['gender'];
$ileach_first_name = $row['ileach_first'];
$ileach_last_name = $row['ileach_last'];
}
//If Ileach Name is blank
if($ileach_last_name == "" || $ileach_first_name == ""){
// Get ileach last name
$row = mysql_fetch_assoc(queryDb("SELECT * FROM ileach_last_names WHERE eng_name='$last_name'"));
$ileach_last_name = $row['gae_name'];
if($ileach_last_name == "") {
$row = mysql_fetch_assoc(queryDb("SELECT * FROM ileach_last_names order by rand() limit 1"));
$ileach_last_name = $row['gae_name'];}
//Get ileach First Name
//If Male
if($gender == 'M') {
$row = mysql_fetch_assoc(queryDb("SELECT * FROM ileach_first_names_m WHERE eng_name='$first_name'"));
$ileach_first_name = $row['gae_name'];
//If no name is selected, get one randomly
if($ileach_first_name == "") {
$row = mysql_fetch_assoc(queryDb("SELECT * FROM ileach_first_names_m order by rand() limit 1"));
$ileach_first_name = $row['gae_name']; }
}
//If Female
else{
$row = mysql_fetch_assoc(queryDb("SELECT * FROM ileach_first_names_f WHERE eng_name='$first_name'"));
$ileach_first_name = $row['gae_name'];
//If no name is selected, get one randomly
if($ileach_first_name == "") {
$row = mysql_fetch_assoc(queryDb("SELECT * FROM ileach_first_names_f order by rand() limit 1"));
$ileach_first_name = $row['gae_name'];}
}
//Save ileach name into db
mysql_query("UPDATE customer SET ileach_first = '$ileach_first_name'
WHERE uuid='".$_COOKIE['uuid']."' ");
mysql_query("UPDATE customer SET ileach_last = '$ileach_last_name'
WHERE uuid='".$_COOKIE['uuid']."' ");
}
//Stitch name together.
$full_ileach_name .=$ileach_first_name;
$full_ileach_name .= " ";
$full_ileach_name .= $ileach_last_name;
?>
推荐答案
认为它与mysql_set_charset有关"-是的,很有可能.
"Think it has something to do with mysql_set_charset" - yes, very likely.
$mysql = mysql_connect(...); // TODO: error handling
mysql_select_db('...', $mysql); // TODO: error handling
mysql_set_charset('utf8', $mysql); // TODO: error handling
要获取更多详细信息,我们需要更多地了解函数queryDB()和相关内容(例如建立数据库连接的地方)
For mor detailed information we need to know more about the function queryDB() and related stuff (like e.g. where the database connection is established)
另请参阅:
- http://dev.mysql.com/doc/mysql/en/charset-connection.html
- http://docs.php.net/mysql_set_charset
这篇关于mysql结果返回?(问号)而不是Ö等的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!