使用utf8列名称的Doctrine 1.2查询

时间:2016-02-08 15:57:55

标签: mysql utf-8 non-ascii-characters doctrine-1.2 columnname

我遇到this同样的问题,但是使用Doctrine 1.2而不是Doctrine 2.0。

我的名字中有一个非Ascii字符的列,当我尝试选择时,Doctrine会给我这个错误:

  

消息:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以便在'?? _ avanc ??附近使用正确的语法? AS c4__1(...)

哪里应该有法语“é”字符而不是双重问号。

这是我的联系:

$conn = Doctrine_Manager::connection("mysql://username:password@locahost/mydb","my_connection");
$conn->setCollate('utf8_general_ci');
$conn->setCharset("utf8");

这是我的选择:

$q = Doctrine_Query::create()->select("vicl_relevé_avancé vc")->FROM("vc.VisiteClient")->where("vc.id = ?", $id)->execute();

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

问号?哎哟。这可能意味着多种事情都出错了。

表/列必须为CHARACTER SET utf8;请参阅SHOW CREATE TABLE进行检查。修复了可能解决问题的方法,但它可能会让它与众不同。

SELECT col, HEX(col) FROM tbl WHERE ... - 查看实际存储的内容。 latin1将显示E9为é; utf8会显示C3A9为é。