我试图学习PHP OOP并遇到了问题。我尝试使用OOP打开和关闭连接
class db{
public function opendb(){
$server = mysql_connect("localhost","root","") or die ("Couldn't connect to server");
$db = mysql_select_db("test",$server) or die ("Couldn't connect to database");
mysql_query("set character_set_server='utf8'");
mysql_query("set names 'utf8'");
}
public function closedb(){
mysql_close($server);
}
}
并在我的PHP页面中使用此代码
$x = new db;
$x->closedb();
并进行此类查询
$x = new db;
$x->opendb();
但是我收到错误,因为无法从第二个函数内部访问$server
。我怎么能这样做?
答案 0 :(得分:1)
好的,既然你正在学习,我会保持这个基础。问自己这些问题:
第一个问题的答案很简单:您的班级将管理数据库连接和查询。
这也回答了第二个问题,在某种程度上:如果要使用这些方法,每个方法都需要DB连接。所有方法都需要访问数据库连接,因此,连接必须具有类范围(即: 必须 是属性)。
最后一个问题,我不打算详细讨论,但常识要求后端课程没有直接与客户沟通(类似这样的课程不应该{{t> { {1}},echo
或exit
)。一个严重的问题(比如无法连接到数据库)应该以不能忽略的方式传达给用户(调用你的类的代码):throw die
' s:调用代码不能忽略这些。
现在我们已经列出了基础知识,让我们了解实际代码(遵循我在评论中链接到的约定,而不是使用Exception
,因为它已被删除):< / p>
mysql_*
现在,如果您不了解所有这些代码,请不要担心:The manual explains all of the methods I've used
另外请注意,我在这里发布的代码是恕我直言,完全没有意义。我已经在codereview.stackexchange上详细解释了原因。 here,also here和here ...但是,如果您关心/想要,您可以阅读我关于包装的其他一些代码评论,基本上就是你在写什么。
它们可能很冗长,与您尝试做的事情没有直接关系,但谁知道:将来它们对您有用。