the*_*ble 0 php mysql encoding utf-8 phalcon
我一直试图开始使用Phalcon,但是我已经被困了几天试图查询我的数据库.如果我找不到解决这个问题的方法,我将不得不继续前进.
目标表使用inno-db并且是utf-8编码的.表有两列:一列是索引值,另一列是单个(唯一)东亚字符.当尝试使用utf-8编码的中文字符检索记录时,Phalcon返回0条记录.此外,在使用索引值检索记录时,相应的字符值将作为问号返回(常规问号,而不是浏览器用作无法识别字符的占位符的问号).
$characters = Characters::find("indCharacter = ?");
Run Code Online (Sandbox Code Playgroud)
返回此错误:
"PhalconException: Scanning error before '??' when parsing: SELECT [Characters].* FROM [Characters] WHERE indCharacter = ? (64)"
Run Code Online (Sandbox Code Playgroud)
在实际字符0周围使用单引号返回结果.
我使用命令行,phpmyadmin和workbench运行完全相同的查询,所有这些查询都在相同的环境中.所有正确返回的记录.
我还仔细检查了原始查询值是否为utf-8编码,并且表中的所有数据都是utf-8编码的.
Phalcon:1.2.6
Php:5.4.11
使用Phalcon的Pdo Mysql适配器创建数据库连接时,必须显式设置字符编码.这是一个类似于Phalcon教程中的例子,除了我已添加"charset".
$di->set('db', function() use ($config) {
return new \Phalcon\Db\Adapter\Pdo\Mysql(array(
"host" => "myhost",
"username" => "myusername",
"password" => "mypassword",
"dbname" => "mydbname",
"charset" => "utf8"
));
});
Run Code Online (Sandbox Code Playgroud)
我以前在文档中查找了各种适配器类,但找不到与设置数据库连接的编码有关的任何内容.我(错误地)假设编码检测是在内部处理的.
| 归档时间: |
|
| 查看次数: |
1178 次 |
| 最近记录: |