簡體   English   中英

相同的聯接查詢:通過Phalcon和phpMyAdmin獲得兩個不同的結果

[英]Same join query: two different results through Phalcon and phpMyAdmin

我正在使用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除外,該字段應為字符串'Aglié',但為null。 樣本輸出:

[{"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}]

另一方面,通過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, Name, ProfilePictureUrl, Birthday, Sex, LookingFor, CommonName, ProvinceName, LastOnline
2, Olga, asd, 2014-07-09, f, girls, Agliè, Torino, NULL

GetAge(birthday)的定義如下:

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表中轉義特殊字符來解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM