如何查看android回傳給php-server(依託discuz的介面)參數後執行的sql語句
項目配置描述如下:
伺服器端:discuz,正在調試串連android的伺服器端介面(用來接收android端發送過來的請求)
用戶端:Android4.4
問題流程描述如下:
android端在論壇發帖後,使用httppost封裝參數,通過httpclient發送到php端的相關url;在php端執行相關的sql操作,通過mysql_query返回true或者false給android端。
問題描述如下:
現在在android端得到發帖返回的結果是{"result":"post failed"} ,(ˇ?ˇ) 想到可能是php端在執行sql操作時發生了錯誤,想查看php端執行的sql語句。由於我的php介面是依託於discuz的,如果單獨將該介面通過zend studio部署到Apache的htdocs,我試過,沒有部署成功,無法接收android端發送的參數
想諮詢下大家,
1)有沒有可能將此介面部署到apache以接收android端的資料(win7,apache,mysql,php5.25,zend studio 10.0)
2)如果沒有,怎麼調試android端傳送給php服務端的參數;現在主要想查看回傳給php服務端後,執行的sql語句。
先謝謝大家了
------解決方案--------------------
這個問題剛好我也遇到了,解決辦法如下
找到:\source\class\discuz\discuz_error.php,並開啟
搜尋:show_error($type, $errormsg, $phpmsg = '', $typemsg = '')
在show_error函數下面,用file_put_contents函數將$errormsg列印到一個txt裡面
public static function show_error($type, $errormsg, $phpmsg = '', $typemsg = '') {
global $_G;
file_put_contents(DISCUZ_ROOT.'./appapi/log.txt',$errormsg.PHP_EOL,FILE_APPEND);
ob_end_clean();
$gzip = getglobal('gzipcompress');
ob_start($gzip ? 'ob_gzhandler' : null);
//後面的就不複製了...
}
缺點就是,discuz的所有sql錯誤都會記錄在裡面,當然一般discuz報的sql錯誤還是很少的
------解決方案--------------------
若你想和discuz的資料完美結合,並減少開發時間的話,建議你還是用discuz已有的DB類和方法
我不知道zend 在哪裡處理了sql,不過執行sql錯誤,你可以用mysql_error()擷取錯誤資訊,用file_put_contents輸出到一個txt裡面
------解決方案--------------------
把你介面的相關代碼亮出來。
沒代碼怎麼解決問題。。。
------解決方案--------------------
這個需要看你的介面了,能不能手工單獨調試?
如果能,你只需要關心傳送的參數
------解決方案--------------------
像你這樣對發揮資料做了封裝的系統,需要對用戶端和服務端分開來調試