我有一个使用MySQL数据库存储登录用户信息的网站,还有我的数据。此网站宿主在共享宿主服务器上。我遇到的问题是我偶尔会遇到一个SQL连接太多的错误。我的最大连接数设置为默认值151。
我正在对所有服务器端脚本使用PHP,并使用mysqli pdo连接。
下面是一些示例代码,演示如何处理来自PHP脚本的SQL连接。我删除了与问题无关的任何内容,例如输入过滤和字符转义。
<?菲律宾
需要(“common.php”);
//获取post数据
//我的数据库查询
$query=”
选择
身份证件,
用户名,
密码,
盐,
电子邮件
来自用户
在哪里?
用户名=:用户名
“;
//为准备好的语句设置参数
$query_params=数组(
':用户名'=>$_post['username']
)(二)
试试看{
$stmt=$db->准备($query);
$result=$stmt->执行($query_params);
}
捕获(pdoexception$ex){
$miscerr=“发生故障,请重试。”;
}
$row=$stmt->fetch();
//使用$row中的数据进行密码散列、检查和登录用户
}
是吗?>
下面是抛出错误的common.php。我不知道正确的处理方法是什么,因为我希望代码在失败之前尝试几次。
<?菲律宾
$username=“用户名”;
$password=“*************”;
$host=“本地主机”;
$dbname=“我的名字”;
$options=array(pdo::mysql_attr_init_command=>'设置名称utf8');
$miscerr=“”;
试试看{
$db=new pdo(“mysql:host=$host dbname=$dbname charset=utf8”,$username,$password,$options”);
}
捕获(pdoexception$ex){
$miscerr=“失败,请重试”;
}
$db->setattribute(pdo::attr_errmode,pdo::errmode_exception);
$db->setattribute(pdo::attr_default_fetch_模式,pdo::fetch_assoc);
我正在对所有服务器端脚本使用PHP,并使用mysqli-pdo连接。
下面是一些示例代码,演示如何处理来自PHP脚本的SQL连接。我删除了与问题无关的任何内容,比如输入过滤和字符转义。
<?php
require("common.php");
//get POST data
//My database query
$query = "
SELECT
id,
username,
password,
salt,
email
FROM users
WHERE
username = :username
";
//set params for prepared statements
$query_params = array(
':username' => $_POST['username']
);
try {
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex) {
$miscErr = "Something failed, please try again.";
}
$row = $stmt->fetch();
//do my password hashing, and checking, and sign in user using data in $row
}
?>
下面是抛出错误的common.php。我不确定正确的处理方法是什么,因为我希望代码在失败之前尝试几次。
<?php
$username = "username";
$password = "**************";
$host = "localhost";
$dbname = "mydbname";
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
$miscErr = "";
try {
$db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options);
}
catch(PDOException $ex) {
$miscErr = "Something failed, please try again";
}
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);