Переход от процедурного интерфейса MySQLi к объектному

это правильный способ подключения к базе данных?

<?php

class Connect {

private $servername;
private $serveruser;
private $password;
private $database;

function __construct($servername, $serveruser, $password, $database )
{
$this->servername = $servername;
$this->serveruser = $serveruser;
$this->password = $password;
$this->database = $database;
}

function conn()
{

try {
$conn = new mysqli($servername, $serveruser, $password, $database);
echo "conn success";
}
catch(Exception $e)
{
echo "ERROR: " . $e->getMessage();
}
}

}
?>

И если бы мне нужно было получить доступ к $ conn в других файлах .php, как бы я это сделал? Пример из процедурного метода: $username = mysqli_real_escape_string($conn,$_POST['username']); Как должна выглядеть эта строка, если мы используем метод ООП?

Постскриптум Пожалуйста, не говорите мне ничего о PDO.

-2

Решение

Вот как на самом деле должен выглядеть ваш код.

<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = new mysqli("host","username","password","database");
0

Другие решения

Переходя к существующему коду, я думаю, что это может быть единственным способом сохранить экземпляр вашего соединения. Я имею в виду, если вы не хотите делать (new Connect(...))->conn() каждый раз.

<?php

class Connect
{
private $servername;
private $serveruser;
private $password;
private $database;

private static $conn = null;

function __construct($servername, $serveruser, $password, $database )
{
$this->servername = $servername;
$this->serveruser = $serveruser;
$this->password = $password;
$this->database = $database;
}

function conn()
{

try {
$conn = new mysqli($servername, $serveruser, $password, $database);
self::$conn = $conn;

echo "conn success";
}
catch(Exception $e)
{
echo "ERROR: " . $e->getMessage();
}
}

public static function instance()
{
if (! self::$conn)
{
# Initialize
# (new static(...))->conn();
}
return self::$conn;
}

}

# In your other *.php files
$username = mysqli_real_escape_string(Connect::instance(),$_POST['username']);
-2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector