PHP 板


LINE

看板 PHP  RSS
※ 引述《libraghost (看好戏)》之铭言: : 请教global应该怎麽写 : 概念小弟大概知道(应该啦),但是写的时候就是出错 : 我是这样写的 : function main() : { : GLOBAL $link; : $link=mysql_connect("$sever","$id","$pw"); : mysql_select_db("$db_name",$link); //这里不知道要不要GLOBAL : tmp(); : mysql_close($link); : } : function tmp() : { : $sql="SELECT `A` , `B` FROM `$table` ORDER BY `A` ASC"; : $list =mysql_query($sql,$link); : list($A,$B) = mysql_fetch_row($list); : } : 结果就是错! 先仅就以上的部分来看。如果一定要写成这样(但是个人并不赞同这个写法), 你应该在tmp()里面也加上global $link: <?php function main() { // 照原本 } function tmp() { global $link; // 以下照原本 } main(); ?> main()里面的global $link;会把下面那行建立的$link变数放到全域变数 的范围里面去,但是在tmp()里面也要加上global $link;告诉後面的程式码 $link这个变数是在全域变数里面而不是本地端变数,这样才拿得到main() 所建立的连线。 不过你的写法很有重新检视的空间。连接资料库这部分程式码是在整个系统里面 会重复使用的,因此有必要独立写成函数,这没错。但是你不应该在里面还加上 个tmp()的呼叫,除非你确定tmp()所做的事情也是属於连接资料库这个动作所 必须执行的一部分,而不是某个无关的东西。我会建议写成这样: <?php function get_mysql($param_1,... $param_N) { global $link; $link = mysql_connect(....); ... } function get_xxx_data() { global $link; $sql = "select * from table...."; $result = mysql_query($sql, $link); while(list($a, $b) = mysql_fetch_row($result)) { ... } return $data_array; } get_mysql(); $xxx_data = fetch_xxx_data(); ... // main()就不需要了。PHP不是C,不需要这样给个进入点。 ?> 通常会把这两个函数放到某个档案里面以便多个程式共用。另外,虽然global可以 在这里解决你的问题,还是要提醒不要滥用global。特别是对於要被放在独立档案 里面,重复被多个程式引入共用的函数而言,太多global $xxx;会让函数的独立性 变得很低,而且会很容易遇到变数名称冲突的问题(要是在某个程式的某个地方 宣告了某个叫做$link的变数,後面的程式可就头大了)。 : : 其实不用自己写啦!当然要练练功力或顺便学习无所谓,可是若有开发专案的时间压力 : : 或考虑功能及安全性,有很多热心的PHP专业高手们已经替我们写了不少有关於操控 : : Database的物件,首推 PEAR::DB ! 它独立的抽象操作层介面让使用者不必担心日後 : : 若要将开发的PHP程式移植到不同的资料库系统时程式码大量修改的问题。此外PHP 5.0 : : 开始加入的PECL扩充模组,里面的PDO(PHP Data Objects Interface)更落实了资料 : : 存取统一介面的功能,而且因为是扩充模组,所以日後昇级更独立且方便,不须要 : : 随着每次PHP版本更新而昇级。 : : 刚好最近在研究PEAR及PECL的各种物件功能(老外说这两个是sisters,姐妹花...), : : 拿来现宝一下,有错请指教! PEAR确实是个宝库。还没进去挖过宝的,现在去看看永不嫌迟。 : 其实我现在是帮家里的店作网页,没有时间压力 : 程式方面自己写居多 : 一来是不会你说的Database物件 : 二来的确有练功的成分... : 而且现在也做的差不多了 : 只是我比较龟毛,希望程式的可重复利用性多一点 : 未来如果谁接手的话,我希望能在即使看不懂程式的情况下进行修改 : 再说把什麽显示留言版,购物车,更新商品资料的动作都写成函式 : 未来如果不幸被逐出家门,拿这些函式去外面骗吃骗喝也方便 ( ̄▽ ̄#) 继续加油 :) --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.132.153.37
1F:推 ast9869:好文~~^^ 01/14 10:35
2F:推 kuoyu:global太多..可以配合建立naming rule来改善.. 01/15 21:58
3F:推 libraghost:我的问题解决了,真的很感谢大家,php精华工具集这本最 01/18 21:20
4F:→ libraghost:近终於弄到了...真是本相见恨晚的好书 01/18 21:24







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灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP