看板 PHP 關於我們 聯絡資訊
小弟新手,剛K完一本入門書,現在正在練習各種範例打底。 打底的過程中,我越來越覺得解決問題的經驗與能力很重要, 透過google大神的幫忙,對於有error code、有亂碼、有各種異常出現的bug, 大多都能找到原因並解決, 但是有些bug,就是看不出異常在哪,也不知從何下手起。 打個比方,底下是網路上的教學範例: <?php class recordset{ var $show; //主機 var $host="主機"; //帳號 var $dbid="帳號"; //密碼 var $passwd="密碼"; //資料庫 var $database="資料庫"; var $conn; function connect(){ $this->conn=mysql_connect($this->host,$this->dbid,$this->passwd); mysql_select_db($this->database); } function recordset($sql){ if(!is_resource($this->conn)) $this->connect(); if(is_resource($this->conn)) { $q=mysql_query($sql,$this->conn); $this->show=mysql_fetch_array($q); } } } $sql="select * from login_list where sn='02' "; $get_db = new recordset($sql); $A = $get_db->show["id"]; echo $A ; ?> 小弟按照自己主機上的資料庫,寫了一支類似的程式: <?php class sql_conn{ var $show; var $host='localhost'; var $db_un='********'; var $db_pw='********'; var $db_name='admin001_php'; var $conn; function db_connect(){ $this->conn=mysql_connect($this->host,$this->db_un,$this->db_pw); mysql_select_db($this->db_name); mysql_query("SET NAMES 'utf8'"); } function db_select($sql){ if(!is_resource($this->conn)){ $this->db_connect(); } else { $sql_q=mysql_query($sql,$this->conn); $this->show=mysql_fetch_array($sql_q); } } } $sql="select * from customers;"; $db_data=new sql_conn($sql); $A = $db_data->show[cid]; if(isset($db_data->conn)){ echo "有connection"; } else{ echo "無connection"; } echo "資料庫執行結果:<br />"; echo $sql_q; echo $A; ?> 跑出來結果是無connection, 所以我已經知道連線沒有建起來。(或者我觀念錯誤) 但接下來我就不知道怎麼處理了, 想請教板上的前輩指導找問題的方法, 讓我以後遇到類似問題能夠按照正確的思路解決, 感謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.26.142
kilfu0701:new之後 加這行 $db_data->db_connect(); 10/12 17:20
maplenote:範例的recordset()是用if/if唷 你用的是if/else 10/12 17:25
maplenote:然後你知道建構子嗎?class是recordset其一function也是 10/12 17:29
maplenote:如果你不知道建構子 那new完應該呼叫db_select($sql) 10/12 17:30
maplenote:且不改if/else的話 一樓寫的也要先呼叫 10/12 17:31
ibbadmin:我試了1樓的code,的確加上這行以後connection就建起來了 10/12 17:33
ibbadmin:現在正在按照樓上的思路去找我哪裡出錯 10/12 17:34
CaptainH:那個範例用 if(!a){...}if(a){..} 才奇怪- -+ 10/12 18:09
maplenote:連線可能會建立失敗囉 這樣寫是合理的呀 10/12 18:13
CaptainH:有道理, 是我沒看清楚. 10/12 18:26
tkdmaf:我覺得可以把連線的成功與否包在class處理。 10/12 22:34
tkdmaf:而不是到了主程式才判斷連線是否正常。 10/12 22:35