我最近在我的网站上发现了几个"连接太多" 错误。我知道解决问题的原因和方法。这个问题,但我必须承认,我不知道避免此问题或如何改进我的代码的最佳做法。
我将发布一个理论代码(请假设一切正常),我请你们帮我解决一些问题以及如何改进这些代码。这样我可以修复其他代码。
connection.php
$conn = new PDO('mysql:host=HOST;dbname=DATABASE;charset=utf8','USER', 'PASSWORD');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
my_page.php
include("connection.php");
$stmt = $conn->prepare("SELECT * FROM tableA WHERE condition = :condition");
$stmt->bindParam(':condition', $condition, PDO::PARAM_INT);
$stmt->execute();
$row = $stmt->rowCount();
function getName($id){
global $conn;
$stmt = $conn->prepare("SELECT * FROM tableB WHERE condition = :condition");
$stmt->bindParam(':condition', $condition, PDO::PARAM_INT);
$stmt->execute();
$row = $stmt->rowCount();
}
function getCompany($id){
global $conn;
$stmt = $conn->prepare("SELECT * FROM tableC WHERE condition = :condition");
$stmt->bindParam(':condition', $condition, PDO::PARAM_INT);
$stmt->execute();
$row = $stmt->rowCount();
}
我的问题是:
1)上面的代码中打开了多少个数据库连接?
2)每次进行查询时,使用($ stmt = $ conn-> prepare),都会打开一个新连接?
3)有一种优化上述代码的方法,假设 INNER JOIN 或任何其他查询优化不可能?我的意思是,有3个表(不相关),我需要从中查询信息而不打开新的连接。
答案 0 :(得分:0)
回答您的特定问题
1)每次“ my_page.php”调用都打开一个连接。
2)每次调用“ my_page.php”都会打开一个新连接。
3)存在优化代码的范围。您应该创建一个 连接类并使用单例模式获取数据库连接 只要需要。