PHP 7.2.4 не может подключиться к моей MySQL 8.0 - PullRequest
0 голосов
/ 26 апреля 2018

Это ошибка, которую я получаю ...

Ошибка при mysqli_connect ()

, а также с новым mysqli Если я добавлю эту строку в комментарий «$ conn = mysqli_connect ...», я не получу сообщение об ошибке, поскольку оно не пытается подключиться к БД.

Fatal error: Uncaught Error: Call to undefined function Classes\Connection\mysqli_connect() in C:\Apache24\htdocs\ControlePM\Classes\Connection\DBConnect.php:21 Stack trace: #0 C:\Apache24\htdocs\ControlePM\index.php(22): Classes\Connection\DBConnect->connect() #1 {main} thrown in C:\Apache24\htdocs\ControlePM\Classes\Connection\DBConnect.php on line 21

Это мой код подключения

Я пытался с новым mysqli та же ошибка.

<?php
    namespace Classes\Connection;
    class DBConnect
    {
    var $host;
    var $username;
    var $password;
    var $database;
    public $dbc;
    public $connInfo=FALSE;

    public function __construct(){
        $this->host = 'localhost:3306';
        $this->username = 'root';
        $this->password = 'MyPassWord';
        $this->database = 'MyDB';
    }
    public function connect()
    {
        $conn = mysqli_connect($this->host,$this->username,$this->password,$this->database); 

    if (! $conn) {
        echo "Error: Unable to connect to MySQL." . PHP_EOL;
        echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
        echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
        exit;
    }
    echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
    echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;
    mysqli_close($conn);
    }
?>

Index.php

<?php 
require_once ('Classes/Connection/DBConnect.php'); 
$conn = new DBConnect();
$conn->connect();

if (! $conn->connInfo){
    $result = "Connection failed";
}
else $result = "Connection Succes";
?>

Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Мой mysqli отсутствовал в сборке PHP

В файле PHP.ini прокомментировано "extension = mysqli"

0 голосов
/ 26 апреля 2018

Вы используете пространство имен, поэтому вам нужно указать, что оно ищет mysqli в глобальном пространстве имен new \mysqli([...]), иначе PHP попытается найти mysqli в вашем текущем пространстве имен (которое указано в вашем классе ).

Во-вторых, вы можете явно «импортировать» его с помощью оператора use.

В-третьих, полезный способ проверить, установлено ли расширение mysqli, путем выполнения следующего var_dump(function_exists('mysqli_connect'));, любезно предоставленного этого ответа.

...