我有一個相當大的調用,我必須加入4個表並獲得50行。當我在我的PHP服務器上拉動它時,它會在0.0013秒內拉出,這很好。所以我嘗試從我的iOS設備調用PHP來獲取記錄,有時候我會得到它們,有時我會得到一半。PHP只返回mysql_query的一半結果
這是我的PHP SQL代碼。
$sql = "SELECT NF.id, NF.type, NF.groupid, NF.classid, NF.videoid, NF.lessonid, NF.text, NF.path, NF.datetime, Groups.name as groupname, Groups.imagepath as groupimage, Classes.title as classname, Classes.imagepath as classimage, Videos.title as videoname, Videos.videopath as videopath, Lessons.title as lessonname, Lessons.imagepath as lessonimage
FROM NewsFeed as NF
LEFT OUTER JOIN Groups on (NF.groupid=Groups.id)
LEFT OUTER JOIN Classes on (NF.classid=Classes.id)
LEFT OUTER JOIN Videos on (NF.videoid=Videos.id)
LEFT OUTER JOIN Lessons on (NF.lessonid=Lessons.id)
WHERE $searchstring
ORDER BY NF.datetime DESC LIMIT 50";
$request = mysql_query($sql) or die(mysql_error());
$arr = array();
if(mysql_num_rows($request)){
while($obj = mysql_fetch_object($request)) {
$arr[] = $obj;
}
}
// Return Array
echo '{"newsfeed":'.json_encode($arr).'}';
mysql_close($link);
現在,當我附和json_encoded陣列,有時我從「新聞源」開始整個數組:和其他時間我得到的是這樣的:
2014年4月24日23: 07:09.574 ProgramName [6573:60b]我們的編程理論......「,」路徑「:」http://site.com/LMS/NewsFeedPictures/IMG2014170220465189.PNG「,」datetime「:」2014-02-17 20 :46:56「,」groupname「:」iOS的LMS「,」groupimage「:」http://site.com/LMS/GroupThumbnails/LMS.jpg「,」classname「:null,」classimage「:null, 「videoname」: ... (並且越來越多的記錄直到結束。)
正如你所看到的,內容字符串開始的地方是我的數據的中間!
所以問題是爲什麼PHP只返回部分數據?
所以我做了一個error_log中(json_encode($ ARR)),並把它的JSLint和JSON是有效的。但是當腳本回應json時,我的應用程序只收到破損的數據......我決定解決這個問題。感謝提示,我會更經常地使用jslint。 – DrRocker
已注意。然後另一個理論是json字符串在服務器和客戶端之間被削減了一半。爲了證明這一點,請嘗試回顯除json字符串以外的大字符串,並在客戶端js中查看它。 如果它像json字符串一樣被減半,那麼我們可以確認在數據傳輸過程中發生了什麼(這不太可能),並且可以繼續深入研究。 – Robotys
迴響一個非常長的字符串,它沒有分裂。這可能是我回應陣列的方式嗎? – DrRocker