每次我学习有关php的新知识时,我都不得不重写代码(例如,mysql连接无法在会话中作为句柄传递的事实),我感到很烦。
如何在项目中实现mysql连接?很多人提出了“连接池”,但是在阅读了手册之后,我仍然迷路了。就像:“连接池是mysql_pconnect!” -我:“和…?实际上有什么不同?您可以在会话中传递mysql_pconnect吗?为什么这看似神秘的光环?”
让我解释一下我的情况。我有一个名为“ query1”的函数:
function query1($query) { $db = new mysql(HOST,USER,PASS,DBNAME); $result = $db->query($query); $db->close(); return $result; }
这似乎是查询数据库的一种浪费和低效的方式( 尤其是 因为您需要像mysql_real_escape_string这样的函数使用mysql句柄)。 什么是正确的表格? 有人可以帮帮我吗?
谢谢,我将非常感谢您提供诚实的好答案。
通常,一旦页面加载就会发生连接。又名
class Database{ public function connect() { $this->connection = mysql_connect(); } // This will be called at the end of the script. public function __destruct() { mysql_close($this->connection); } public function function query($query) { return mysql_query($query, $this->connection); } } $database = new Database; $database->connect(); $database->query("INSERT INTO TABLE (`Name`) VALUES('Chacha')");
基本上,您在页面的开头打开连接,在页面的结尾将其关闭。然后,您可以在页面期间进行各种查询,而不必对连接做任何事情。
您甚至可以按照Erik的建议在构造函数中执行mysql_connect。
要使用全局变量(不建议使用,因为它会创建全局状态),请执行以下操作
Global $db; $db = new Database; // ... do startup stuff function doSomething() { Global $db; $db->query("Do Something"); }
哦,没有人提到您不必传递参数。只需连接
mysql_connect();
然后,无论作用域是什么,mysql_query将只使用最后一个连接。
mysql_connect(); function doSomething() { mysql_query("Do something"); }
根据评论:
我认为您应该使用mysql_pconnect()而不是mysql_connect(),因为mysql_connect()不使用连接池。–夜间编码器
您可能要考虑使用mysql_connect还是mysql_pconnect。但是,每个脚本仍应仅连接一次。
mysql_connect
mysql_pconnect