Php 在每个函数中打开和关闭mysql的错误做法
例如:Php 在每个函数中打开和关闭mysql的错误做法,php,mysql,oop,mysqli,Php,Mysql,Oop,Mysqli,例如: class SimpleClass{ public function foo() { mysql_open(); //do mysql query here mysql_close(); } public function boo() { mysql_open(); //do mysql query here mysql_close(); } } 还是在课程开始时打开一个mysql_,在课程结束时打开一个mysql_更好
class SimpleClass{
public function foo() {
mysql_open();
//do mysql query here
mysql_close();
}
public function boo() {
mysql_open();
//do mysql query here
mysql_close();
}
}
还是在课程开始时打开一个mysql_,在课程结束时打开一个mysql_更好
谢谢
编辑:我使用mysqli,这只是一个例子。
我应该在每个页面文件中打开和关闭吗?与index.php中一样,cataegory.php应该有一个打开和关闭选项。是的,这是一种不好的做法。原因如下:
- 制造康涅狄格州的成本很高
- 调用多个函数期间无法使用事务
- 每个实例都有自己的连接。太糟糕了
- 等等
使用PDO,或者自己创建singleton db类。我建议将连接包装在作为singleton运行的DAO类中,以管理您的连接。除了上面其他人所说的关于准备好的语句和不推荐使用的函数之外,我还将使用这些不推荐使用的函数来演示DAO概念
<?php
class MyGreatDAO{
private static $con = null//late static feature in php 5.3
private __construct(){
}
public static getInstance(){
if($con === null){
$con = mysql_connect($server,$user,$pass);
}
return $con;
}//untested
建议。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。请不要这样做,除非您正在进行大量的中间处理。打开和关闭连接需要开销。有时候,如果您要在几分钟内循环和处理结果,那么释放连接是有益的。但这是逐案的。额外读取在脚本开头打开连接对象中的连接;并将该连接对象传递/注入到所有需要它的类中,以便它们可以使用该类正在执行的操作的已打开的ConnectionPend。外面有线路吗?所有的查询都在这个类内吗?..@wumm在这个类外有查询。更新了我的帖子。我在回答中提到了它已经过时的事实。此外,单身人士有什么问题?这种代码的问题在于,您的服务状态是隐式的。也许考虑阅读?如果我可以建议只传递对象,这样就可以清楚地知道谁在使用它,而不是在代码中有一个美化的全局(单例)?@BenjaminGruenbaum,那篇文章的评论说明了很多。他有很多很好的观点,但其他人也没有。