PHP 板


LINE

看板 PHP  RSS
※ 引述《ibbadmin (愛BB)》之銘言: : 小弟新手,剛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); : } : } : } 注意到 recordset 類別裡有一個同名函式: recordset() 在 PHP 5.3.3 之前, 與 class 同名的 member function 被當作建構子(constructor), 建構子就是物件生成時自動執行的函式, 底下解釋. : $sql="select * from login_list where sn='02' "; : $get_db = new recordset($sql); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 注意這行: 當 recordset 被 new 出來之後 會自動呼叫 $this->recordset($sql) 而這個函式會去跑 mysql_conn(...); mysql_select_db(...) 所以底下才能正確取得資料 : $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); : } : } : } 如果你用的是PHP 4, 那你可以照上面的方法來改 也就是把 db_selct() 重新取名叫 sql_conn(), 像這樣: class sql_conn{ .... function sql_conn($sql){ if(!is_resource(...)) .... } } 應該就能跑了, 但不建議學這種過時的語法. 若你用 PHP 5 或之後, 建構子不再是那個 "與 class 同名的 member function", 而是固定的函式: __construct() 此外, var 這個 keyword 要改成 public, 這是物件導向的問題, 暫且不提. 所以你的 class 應該要這樣寫: class sql_conn{ public $show, $host='localhost', $db_un='********', $db_pw='********', $db_name='admin001_php', $conn; function db_connect(){ .... } function __construct($sql){ ....(原來 db_select 的內容) } } : $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, : 所以我已經知道連線沒有建起來。(或者我觀念錯誤) : 但接下來我就不知道怎麼處理了, : 想請教板上的前輩指導找問題的方法, : 讓我以後遇到類似問題能夠按照正確的思路解決, : 感謝。 良心建議: 找新一點的書, 找新一點的範例. PHP都出到6了, 別再用4的東西. 我前陣子在書店, 看到某本PHP的書還在用$HTTP_GET_VARS, 實在很可怕. --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.34.130.101 ※ 編輯: CaptainH 來自: 114.34.130.101 (10/12 17:48) ※ 編輯: CaptainH 來自: 114.34.130.101 (10/12 17:50)
1F:推 ibbadmin:感謝C大指點,剛剛一位maplenote大也指正了我的錯誤 10/12 17:58
2F:→ maplenote:原來是版本問題阿 只用過__construct還懷疑了一下能跑嗎 10/12 17:58
3F:→ maplenote:先測了一下可以跑 才敢說是建構子XDDDD 10/12 17:58
4F:→ ibbadmin:我學的書就是用PHP6,就是這個網路教學範例舊了 10/12 17:58
5F:→ maplenote:但是我是php5.3.4耶 為什麼可以這範例阿~"~? 10/12 18:01
為了向後相容, PHP 5 找不到 __construct() 就會把同名函式當建構子 我文章的講法有點問題, 改一下. ※ 編輯: CaptainH 來自: 114.34.130.101 (10/12 18:07)
6F:推 maplenote:soga 謝謝^_^ 10/12 18:09
7F:→ tkdmaf:「PHP都出到6了」但事實上PHP6不是還沒正式版本??? 10/12 22:37
8F:→ tkdmaf:另外還是得強調所謂「過時的語法」...... 10/12 22:43
9F:→ tkdmaf:當你很不幸的就是遇到舊系統時,你會相信他還沒過時。 10/12 22:43
10F:推 LPH66:同意樓上 我看過某國內虛擬主機供應商用的是php 4.3.9... 10/12 23:46
11F:→ LPH66:於是為了 ajax 只好跑去找了個給 php4 的 json_encode 來用 10/12 23:47







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP