В настоящее время я переключил все функции mysql_ * на функции mysqli_ *, и я получаю следующие ошибки.
PHP Warning: mysqli_connect(): (HY000/1040): Too many connections in
PHP Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in
PHP Warning: mysqli_error() expects parameter 1 to be mysqli, boolean
В config.php:
$dbuser = "xxx";
$dbpass = "xxx";
$dbhost = "xxxx";
$dbname = "xxxxxx";
$connection = mysqli_connect($dbhost, $dbuser, $dbpass) or die("could not connect to mysql");
if($connection){
echo "\n Database connected ....\n\n";
}
mysqli_select_db($connection,$dbname) or die(mysqli_error($connection));
В other.php
require_once 'Lib/config.php';
class Mutex {
protected $connection;
public function __construct()
{
global $dbuser,$dbpass,$dbname,$dbhost; // globally declaring the config variables
$this->connection = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
//you need to exit the script, if there is an error
exit();
}
}
public function Prog($pack = null) {
if(isset($pack) && $pack != "") {
$sql_qry = "SELECT id from xxxx WHERE package like '" . addslashes($pack) . "'";
showSqlQuery($sql_qry);
$result = mysqli_query($this->connection,$sql_qry)or die(mysqli_error($this->connection));
if($result && mysqli_num_rows($result)>0) {
$row = mysqli_fetch_assoc($result);
if(!empty($row)) {
return "Exists";
}
}
return "NotExists";
}
return "InvalidProcess";
}
}
Пробовал много решений, но никто из них не работал для меня
Получение ошибок, как показано выше. Пожалуйста, помогите мне решить это.
Заранее спасибо.
Вместо того, чтобы дублировать (почти) соединение, вы можете попробовать подход, в котором вы передаете ссылку на соединение db в качестве параметра в конструктор Mutex
<?php
/* lib/config.php */
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'xxx';
$dbname = 'xxx';
$db = new mysqli( $dbhost, $dbuser, $dbpass, $dbname );
?>
<?php
include 'lib/config.php';
class Mutex{
private $connection;
public function __construct( $dbo=object ){
$this->connection=$dbo;
}
public function Prog($pack = null) {
$result='InvalidProcess';
if( !empty( $pack ) ) {
$sql='select 'id' from 'xxxx' where 'package' like ?';
$stmt=$this->connection->prepare( $sql );
if( $stmt ){
$var = '%'.$pack.'%';
$stmt->bind_param('s', $var );
$result=$stmt->execute();
if( $result && $stmt->num_rows > 0 ){
$stmt->store_result();
$stmt->bind_result( $id );
while( $stmt->fetch() ){/* do stuff perhaps */
echo $id;
}
$stmt->free_result();
$stmt->close();
$result='Exists';
}
}
}
return $result;
}
$pack='banana';
$mutex=new Mutex( $db );
$mutex->Prog( $pack );
?>
Я думаю, что у вашей конфигурации БД есть некоторые проблемы.
Замените следующий код файла config.php ниже.
$dbuser = "xxx";
$dbpass = "xxx";
$dbhost = "xxxx";
$dbname = "xxxxxx";
$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
config.php
используя 1 метод, а затем другое соединение вMutex
используя другой метод?