我正在使用MySQL和PHP 5.3并尝试此代码.
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$con = MysqL_connect("localhost", "root", "");
MysqL_set_charset('utf8');
if (!$con)
{
die('Could not connect: ' . MysqL_error());
}
MysqL_select_db("kdict", $con);
$sql = "SELECT * FROM `en-kh` where english='a'";
echo $sql;
$result = MysqL_query($sql);
while($row = MysqL_fetch_array($result))
{
echo $row['english'] . " </br> " . $row['khmer'];
echo "<br />";
}
?>
=>我有很好的UTF-8渲染显示,做得很好.
但是现在我创建了一个类PDO,以便于扩展和更容易
class crud {
// code..
public function conn()
{
isset($this->username);
isset($this->password);
if (!$this->db instanceof PDO)
{
$this->db = new PDO($this->dsn, $this->username, $this->password);
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->db->setAttribute(PDO::MysqL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
}
}
/*more code here*/
}
/*** a new crud object ***/
$crud = new crud();
/*** The DSN ***/
$crud->dsn = "MysqL:dbname=kdict;host=localhost";
/*** MysqL username and password ***/
$crud->username = 'root';
$crud->password = '';
/*** select all records from table ***/
$records = $crud->rawSelect("SELECT * FROM `en-kh` where english='a'");
/*** fetch only associative array of values ***/
$rows = $records->fetchAll(PDO::FETCH_ASSOC);
/*** display the records ***/
foreach($rows as $row)
{
foreach($row as $fieldname=>$value)
{
echo $fieldname.' = '.$value.'<br />';
}
echo '<hr />';
}
?>
但它显示我的角色这样的’????’
我在Stack Overflow上找到了这个链接,看起来我遇到了同样的问题 Special characters in PHP / MySQL
它与我的问题看起来一样=>我试图解决它,但我仍然无法正常工作.
$this->setAttribute(PDO::MysqL_ATTR_INIT_COMMAND, "SET NAME'utf8'");
谁能告诉我这是什么问题?我该如何纠正?
谢谢 解决方法: 你错过了一个S:it’s SET NAMES 而不是SET NAME:
$this->setAttribute(PDO::MysqL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
当然,你还需要取消评论.此外,PDO :: MysqL_ATTR_INIT_COMMAND can not be set与PDO::setAttribute() 建立数据库连接后(常量名称显示全部),您必须使用$driver_options参数在constructor中指定它,如下所示:
$this->db = new PDO($this->dsn, $this->username, $this->password, array(PDO::MysqL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
另一种方法是在连接后立即执行相同的查询:
$this->db = new PDO($this->dsn, $this->username, $this->password);
$this->db->exec("SET NAMES 'utf8';");
(编辑:北几岛)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|