【问题标题】:php - MySQL Error 1040 "Too many connections"php - MySQL 错误 1040 “连接太多”
【发布时间】:2017-10-30 00:17:24
【问题描述】:

我有这个错误,我在几页上看到如何修复它,增加最大连接变量,但我想知道是否有任何方法可以在抛出该错误之前重试连接“n”次, 我正在使用 mysqli 创建我的连接。

如果可能的话,我将非常感谢您能给我的任何帮助,以了解如何做到这一点

更新

con.php

<?php $con = new mysqli("localhost", "root", "", "grmv"); 
if($conexion->connect_errno) {
die ("Error: " . $con->connect_errno . "---" . $con->connect_error);
}
return $con;
?>


 Products.php
<?php
            include"con.php";
           mysqli_query($con,"SET NAMES 'utf8'");
            $result=mysqli_query($con,"select * from bio, carac where idprod=5");
while($data=mysqli_fetch_array($result)){
....
}
$conexion->close();
}
?>

【问题讨论】:

  • 您能否至少发布代码让我们了解问题所在?从中我们能明白什么?
  • 如果您向我们展示您的代码会更好,以便我们识别您是否正在生成多个不必要的连接
  • 我猜你总是为你所做的每一个查询重新连接,所以解决方案不是增加连接数量,而是保持你的连接,关闭不必要的连接。 - 必须查看代码。
  • 这里是代码,我在数据库中搜索产品的特征以表格显示大约有40-50个产品

标签: php mysql mysqli error-handling try-catch


【解决方案1】:

更一致的方法是继续使用 OOP 方法,也是对任何不受信任的输入使用绑定的好习惯,也许不是专门在这里,但仍然是好习惯。

$mysqli = new mysqli(
            $connectionData['DB_HOST'],
            $connectionData['DB_USER'],
            $connectionData['DB_PASSWORD'],
            $connectionData['DB_NAME']
        );
$mysqli->set_charset('utf8');
$stmt = $mysqli->prepare("select * from bio, carac where idprod=?");
$stmt->bind_param('5');
$stmt->execute();
while ($result = $stmt->fetch()) {
       // do stuff     
}

$stmt->close();

【讨论】:

  • 这不回答 OP 的问题,并且查询中没有来自外部的输入,因此在这种特殊情况下语句不是强制性的。不错的尝试。
  • $stmt->close();是这里的关键区别,而不是我提到的绑定。 “不错的尝试”显然不会增加谈话内容。
猜你喜欢
  • 2015-03-24
  • 2012-12-29
  • 2020-04-27
  • 2014-06-27
  • 2015-08-06
  • 2019-07-15
  • 2018-12-22
  • 2019-04-29
  • 1970-01-01
相关资源
最近更新 更多