標籤:
涉及的代碼網址:http://www.cnblogs.com/leetao94/p/4690732.html
代碼的點評
優點:代碼通用性很好,能夠根據傳入的欄位,自動拼接SQL語句
缺點:不支援參數綁定,程式魯棒性差
類變數使用不當,不應使用公用變數。建構函式傳入參數過多,容易造成多點故障
代碼格式縮排採用雙tab製表位
程式未使用logger記錄常見故障資訊
資料庫連接多次建立,未重用串連。getcolumn代碼中採用寫入程式碼訪問資料庫
使用select * 訪問資料庫
程式未考慮多列主鍵的情境
刪除操作屬於學院派作風
php中對返回結果使用json_encode方法不當json_encode("true"); json_encode("{\"retcode\":true}")
php中寫入程式碼現象仍然存在 後端取介面參數未作存在性校正
前端編輯中缺少放棄功能,且點擊資料列表會丟失使用者當前工作,修改時編碼可修改,且幾個按鈕狀況不正確
前端輸入介面不友好,包含檔案未作絕對路徑引用 未使用日誌
問題太多,逐步解決,先解決日誌問題,為之後調試背景程式,帶來便利網上關於log4php配置的文章很多,下面是我的配置,跟網上部分略有不同(1)添加日誌 1.下載log4php,到官網就可以下載到,下載後解壓 我的版本是log4php_2.3.0
官網地址:http://logging.apache.org/log4php/changelog.html 2.在項目中使用log4php
工程的目錄結構如下:
(1)include檔案夾:包含第三方庫的引用
(2)images檔案夾:包含網站的圖片
(3)js檔案夾:包含網站的指令檔
(4)css檔案夾:包含網站的樣式表
在include檔案下,建立log4php目錄,然後將剛才解壓的log4php目錄下的src檔案夾下的log4php檔案夾拷貝到該目錄下,如所示:
其中多出來的log目錄是之後的記錄檔存放的位置
(3).
建立log4php.properties的設定檔
log4php.rootLogger=DEBUG, A1log4php.appender.A1=LoggerAppenderRollingFilelog4php.appender.A1.file=webdisk.loglog4php.appender.A1.layout=LoggerLayoutTTCClog4php.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %C{1}:%M %p %m%nlog4php.appender.A1.MaxFileSize=1024log4php.appender.A1.MaxBackupIndex=3
網上大多數這個時候配置就結束了,然而配置並沒有結束
還有一個設定檔log_conf.xml
<?xml version="1.0" encoding="UTF-8"?><log4php:configuration xmlns:log4php="http://logging.apache.org/log4php/" threshold="all"> <appender name="default" class="LoggerAppenderDailyFile"> <layout class="LoggerLayoutPattern" > <param name="conversionPattern" value="%date{Y-m-d H:i:s} %logger %msg%n" /> </layout> <param name="file" value="D:/servers/phpweb/edu_system/log/data.%s.txt" /> </appender> <appender name="dblog" class="LoggerAppenderDailyFile"> <layout class="LoggerLayoutPattern"> <param name="conversionPattern" value="%date{Y-m-d H:i:s} %logger %msg%n" /> </layout> <param name="file" value="D:/servers/phpweb/edu_system/tpssdb.%s.txt" /> </appender> <logger name="db\PdoDB"> <level value="DEBUG" /> <appender_ref ref="dblog" /> </logger> <root> <level value="DEBUG" /> <appender_ref ref="default" /> </root></log4php:configuration>
開啟apache伺服器,訪問test_log.php瀏覽器結果: 發現多了個檔案夾log,log下多了個檔案(5)將之前的actSQL.class.php類加入logger 代碼部分如下:
function insertData($objstr,$tablename) { $dbc=$this->conData(); if($dbc) { $columnname=array(); $columnname=$this->getColumns($tablename); //echo $columnname[0]; $clos=implode(‘,‘,$columnname); //將列名數群組轉換為字串 $this->logger->debug(__LINE__ .‘ ‘.‘列名字串:‘.$cols); //echo $clos; $this->logger->debug(__LINE__ .‘ ‘.‘列名數組字串:‘.$clos); $data=json_decode($objstr,true); //將json格式的字串轉換為關聯陣列 //echo $value[‘keychartname‘]; $values=array(); foreach($columnname as $value) { //安裝查詢到的列名查詢資料,資料為空白的,賦值為NULL,防止資料庫插入數值錯位 //echo $data[$value]."<br>"; if(isset($data[$value])) { array_push($values,$data[$value]); }else{ $data[$value]=NULL; array_push($value,$data[$value]); } } $strvalue=implode(‘,‘,$values); //echo $strvalue; /* * SQL: insert into $tablename($clos) values(...) */ $sql=<<<SQL insert into $tablename($clos) values($strvalue);SQL; //echo $sql; $this->logger->debug(__LINE__ .‘ ‘.‘insert語句:‘.$sql); $res=mysqli_query($dbc,$sql); if($res) { $this->logger->debug(__LINE__ .‘ ‘.‘插入成功!‘); return true; }else{ $this->logger->debug(__LINE__ .‘ ‘.‘插入失敗!‘); return false; } }else{ $this->logger->debug(__LINE__ .‘ ‘.‘串連資料庫失敗,錯誤資訊:‘.mysqli_connect_error($dbc)); } }
後台調試簡單了許多,下面是日誌部分
大功告成!
log4php的配置--PHP類初識,通用資料庫操作類代碼問題