相同的连接查询:通过Phalcon和phpMyAdmin得到两个不同的结果

相同的连接查询:通过Phalcon和phpMyAdmin得到两个不同的结果,php,mysql,join,phpmyadmin,phalcon,Php,Mysql,Join,Phpmyadmin,Phalcon,我正在使用php Phalcon框架 使用phalcon执行的查询: $rawQuery = 'SELECT users.ID, users.Name, users.ProfilePictureUrl, users.Birthday, GetAge(users.Birthday) as Age, ' . ' users.Sex, users.LookingFor, commons.Name as CommonName, provinces.Name as Province

我正在使用php Phalcon框架

使用phalcon执行的查询:

$rawQuery = 
    'SELECT users.ID, users.Name, users.ProfilePictureUrl, users.Birthday, GetAge(users.Birthday) as Age, ' .
    '    users.Sex, users.LookingFor, commons.Name as CommonName, provinces.Name as ProvinceName, users.LastOnline FROM favorites ' .
    'INNER JOIN users ON favorites.FavoriteUserID = users.ID ' .
    'INNER JOIN commons ON commons.ID = users.CommonID ' .
    'INNER JOIN provinces ON provinces.ID = commons.ProvinceID ' .
    'WHERE favorites.OriginUserID = ' . $this->ID;
return $this->getReadConnection()->query($rawQuery)->fetchAll();
此查询正确返回除CommonName之外的所有字段,CommonName应为字符串“Aglié”,但为空。样本输出:

[{"ID":"2","0":"2","Name":"Olga","1":"Olga","ProfilePictureUrl":"asd","2":"asd","Birthday":"2014-07-09","3":"2014-07-09","Sex":"f","4":"f","LookingFor":"girls","5":"girls","CommonName":null,"6":null,"ProvinceName":"Torino","7":"Torino","LastOnline":null,"8":null}]
ID, Name, ProfilePictureUrl, Birthday, Sex, LookingFor, CommonName, ProvinceName, LastOnline
2, Olga, asd, 2014-07-09, f, girls, Agliè, Torino, NULL
另一方面,通过phpMyAdmin执行相同的查询:

SELECT users.ID, users.Name, users.ProfilePictureUrl, users.Birthday, GetAge(users.Birthday) as Age,
    users.Sex, users.LookingFor, commons.Name as CommonName, provinces.Name as ProvinceName, users.LastOnline FROM favorites
INNER JOIN users ON favorites.FavoriteUserID = users.ID 
INNER JOIN commons ON commons.ID = users.CommonID
INNER JOIN provinces ON provinces.ID = commons.ProvinceID
WHERE favorites.OriginUserID = 1
它无限期地挂着。但是,如果我去掉年龄字段,它将返回所有正确的字段,包括CommonName和有效字符串。样本输出:

[{"ID":"2","0":"2","Name":"Olga","1":"Olga","ProfilePictureUrl":"asd","2":"asd","Birthday":"2014-07-09","3":"2014-07-09","Sex":"f","4":"f","LookingFor":"girls","5":"girls","CommonName":null,"6":null,"ProvinceName":"Torino","7":"Torino","LastOnline":null,"8":null}]
ID, Name, ProfilePictureUrl, Birthday, Sex, LookingFor, CommonName, ProvinceName, LastOnline
2, Olga, asd, 2014-07-09, f, girls, Agliè, Torino, NULL
GetAgebirthday的定义如下:

return DATE_FORMAT(FROM_DAYS(DATEDIFF(curdate(),birthday)), '%Y')
为了简单起见,您可以假设只有4个表用户、收藏夹、公用区和省,查询中只使用这些字段。其他任何东西都是无用的

这对我来说毫无意义。。。请帮忙

Apache版本2.4.4

PHP版本5.4.12

MySql版本5.6.12

Phalcon版本1.3.2


Windows 7 64位操作系统

这是因为通用名称末尾的特殊字符“é”。显然,如果该字段包含此类字符,json_encode将跳过该字段。我通过直接在commons表中转义特殊字符来解决问题。

如果用定义替换函数调用,会发生什么?我可以建议你去度假吗。它非常简单:timestamp、year、birth、CURDATE,如果birth是DATE或DATETIME类型。结果是一个整数。这是一个小问题。目前,我的问题是CommonName列为null:我无法解释…这对每个人都有效吗?我仍在开发中,我只有几条记录,但对这两条记录都有效。请尝试对commons表进行简单查询。从commons中选择名称作为CommonName;很高兴你解决了。你可以将自己的答案标记为已接受,这样就不会再出现在未回答的问题列表中。啊,当然,我忘记了延迟。谢谢你的评论!