Как получить последнюю использованную ссылку mysqli $ из функции mysqli_connect ()? - PullRequest
0 голосов
/ 21 ноября 2019

Я был вынужден конвертировать мой сайт, написанный для PHP 5, в 7.3. Скажем в следующей (старой) функции:

function logMySQLError($err_line)
{
    $err_no = @mysql_errno();
    $err_desc = @mysql_error();
    $err_time = date("n/j/Y, G:i:s", getLocalDateTimw());

    postError("$err_time - MySQL #$err_no '$err_desc', line:$err_line");
}

Это можно вызывать по всему сайту следующим образом:

if(!$result)
{
    logMySQLError(__LINE__);
}

Теперь в 7.3 я должен добавить «i», чтобы сделать этоработать;) но тогда он также требует $link параметр :

function logMySQLError($err_line)
{
    $err_no = mysqli_errno(/* $link */);
    $err_desc = mysqli_error(/* $link */);
    $err_time = date("n/j/Y, G:i:s", getLocalDateTimw());

    postError("$err_time - MySQL #$err_no '$err_desc', line:$err_line");
}

Как получить последний использованный $link из предыдущего вызова mysqli_connect (), не передавая егоявно в эту функцию? (Как раньше).

1 Ответ

0 голосов
/ 21 ноября 2019

Вы можете использовать классовый подход, поскольку, как я видел, у вас есть только функции, которые, вероятно, выглядят так, как будто вы используете базовое процедурное программирование, для этого подхода, возможно, будет лучше использовать подход ООП.

Я приведу класс для примера:

class DB {

    protected $db_name = 'databasename';
    protected $db_user = 'databaseuser';
    protected $db_pass = 'databasepassword';
    protected $db_host = 'databasehost';
    protected $connect_db = null;

    // Open a connection to the database.
    // Make sure this is called on every page that needs to use the database.

    public function connect() {

        $this->connect_db = new mysqli( $this->db_host, $this->db_user, $this->db_pass, $this->db_name );

        if ( mysqli_connect_errno() ) {
            printf("Connection failed: %s\
", mysqli_connect_error());
            exit();
        }
        return true;

    }

    /** Here's your new function **/
    public function logMySQLError($err_line)
    {
        $err_no = mysqli_errno($this->connect_db);
        $err_desc = mysqli_error($this->connect_db);
        $err_time = date("n/j/Y, G:i:s", getLocalDateTimw());

        postError("$err_time - MySQL #$err_no '$err_desc', line:$err_line");
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...