gpt4 book ai didi

php - 您如何有效地在 php 中连接到 mysql 而无需重新连接每个查询

转载 作者:IT老高 更新时间:2023-10-29 00:11:36 25 4
gpt4 key购买 nike

每次学习 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com