- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
每次学习 php 的新知识时,我都不得不重写我的代码(例如 mysql 连接不能在 session 中作为句柄传递)。
你如何在你的项目中实现mysql连接?很多人提出了“连接池”,但是在阅读了手册之后我仍然迷路了。就像:“连接池是 mysql_pconnect!” - 我:“而且……?这在现实中有什么不同?你能在 session 中传递一个 mysql_pconnect 吗?为什么这个看起来很神秘的光环??”
让我解释一下我的情况。我有一个名为“query1”的函数:
function query1($query)
{
$db = new mysql(HOST,USER,PASS,DBNAME);
$result = $db->query($query);
$db->close();
return $result;
}
这似乎是查询数据库的一种浪费且低效的方式(尤其是,因为您需要一个 mysql 句柄来处理 mysql_real_escape_string 之类的函数)。 这样做的正确形式是什么?有人可以帮我吗?
谢谢你,我非常感谢你诚实的回答。
最佳答案
通常在页面加载后发生连接。又名
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 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");
}
根据评论:
I think you should use mysql_pconnect() instead of mysql_connect(), because mysql_connect() doesn't use connection pooling. – nightcoder
您可能需要考虑是使用 mysql_connect
还是 mysql_pconnect
。但是,您仍然应该只为每个脚本连接一次。
关于php - 您如何有效地在 php 中连接到 mysql 而无需重新连接每个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2129162/
我是一名优秀的程序员,十分优秀!