Problemas na conexão com banco de dados mysql e php OOP (mysqli)

Boas, pessoal estou com um problema durante os meus estudos com php Orientado a Objectos para criação de uma CRUD. Então o problema é o seguinte: fui seguindo o curso passo a passo e estava a correr tudo bem passo, mas quando chegou a hora de testar se havia comunicação com a base de dados através da inserção de um registo numa tabela, não teve sucesso. Tentei pesquisar em foruns, voltei a assistir as aulas relacionadas a criação das classes, fiz downgrade, reinstalei o LAMPP (estou a usar linux) mais nada funcionou. Gostaria de ter a vossa ajuda. Abaixo deixarei códigos e a estrutura do projecto

Estrutura
(Raiz)Sistema
-bd
-classes
*conexao.php
*usuario.php
-css
-js
-libs
-procedimentos
-login
*registarUsuario.php (dentro de login que esta dentro de procedimento)
-views
*dependencias.php
*menu.php
*registar.php (est]a na raiz do projecto)

Codigos

conexao.php

<?php

class conectar
{

    // VARIAVEIS/CREDENCIAS  DE ACESSO A BASE DE DADOS
    private $servidor = "localhost";
    private $usuario = "root";
    private $senha = "";
    private $bd = "sistema";

    public function conexao()
    {
        $conexao = mysqli_connect(
            $this->servidor,
            $this->usuario,
            $this->senha,
            $this->bd
        );

        if (!$conexao) {
            echo ("Sucesso!");
        } else {
            echo ("Falha");
        }

        return $conexao;
    }
}

usuario.php

<?php
// require_once "../classes/conexao.php";

class usuario
{
    public function registarUsuario($dados)
    {
        $con = new conectar();
        $conexao = $con->conexao();
        $data = date('Y-m-d');

        $sql = "INSERT INTO usuario(nome, user_name, email, senha, data_captura) VALUES ('$dados[0]', '$dados[1]', '$dados[2]', '$dados[3]', '$data')";


        return mysqli_query($conexao, $sql);
    }
}

registarUsuario.php

<?php

require_once "../../classes/conexao.php";
require_once "../../classes/usuario.php";

$user = new usuario();
$senha = sha1($_POST['senha']);

$dados = array(
    $_POST['nome'],
    $_POST['usuario'],
    $_POST['email'],
    $senha
);


echo $user->registarUsuario($dados);

registar.php

<?php
// require_once "./views/dependencias.php";
require_once "classes/conexao.php";

$obj = new conectar();
$conexao = $obj->conexao();

?>

<!DOCTYPE html>
<html>

<head>
    <title>Registrar Usuário</title>
    <link rel="stylesheet" href="libs/bootstrap-5.0.0-beta1-dist/css/bootstrap.min.css">
    <link rel="stylesheet" href="libs/alertifyjs/css/alertify.min.css">
    <link rel="stylesheet" href="libs/alertifyjs/css/themes/default.css">
    <link rel="stylesheet" href="libs/select2-4.0.13/dist/css/select2.min.css">
    <link rel="stylesheet" href="css/style.css">



</head>

<body style="background-color: gray">
    <br><br><br>
    <div class="container">
        <div class="row">
            <div class="col-sm-4"></div>
            <div class="col-sm-4">
                <div class="panel bg-white">
                    <div class="panel panel-heading bg-warning">Registrar Administrador</div>
                    <div class="panel panel-body">
                        <form id="frmRegistro">
                            <label>Nome</label>
                            <input type="text" class="form-control input-sm" name="nome" id="nome">
                            <label>Usuário</label>
                            <input type="text" class="form-control input-sm" name="usuario" id="usuario">
                            <label>Email</label>
                            <input type="text" class="form-control input-sm" name="email" id="email">
                            <label>Senha</label>
                            <input type="password" class="form-control input-sm" name="senha" id="senha">
                            <p></p>
                            <span class="btn btn-primary" id="registro">Registrar</span>
                            <a href="index.php" class="btn btn-default">Voltar Login</a>
                        </form>
                    </div>
                </div>
            </div>
            <div class="col-sm-4"></div>
        </div>
    </div>


    <script src="libs/jquery/jquery-3.5.1.min.js"></script>
    <script src="libs/select2-4.0.13/dist/js/select2.full.min.js "></script>
    <script src="https://unpkg.com/@popperjs/core@2/dist/umd/popper.js"></script>
    <script src="libs/bootstrap-5.0.0-beta1-dist/js/bootstrap.min.js"></script>
    <script src="libs/alertifyjs/alertify.min.js"></script>
    <script src="js/script.js"></script>


    
    <script>
        $(document).ready(function() {
            $("#registro").on("click", function() {
                vazios = validarFormVazio("frmRegistro");

                if (vazios > 0) {
                    alert("Preencha os campos!!");
                    return false;

                }

                dados = $("#frmRegistro").serialize();
                $.ajax({
                    type:"POST",
                    data:dados,
                    url:"procedimentos/login/registarUsuario.php",
                    success: function(r) {
                        console.log("aqui");
                         alert(r);
                        if (r==1) {
                            alert("Inserido com Sucesso!");
                        } else {
                            alert("Erro ao Inserir");
                        }
                    }
                });

            });

        });
    </script>
</body>

</html>

Gostaria de entender o que fiz de errado para prosseguir no aprendizado… Preciso da vossa ajuda. Obrigado

Debuga com Xdebug, pra pelo menos saber o que deu errado.

Xdebug é uma extensão do chrome ou vstudio?

PHP, que pode ser usado via VScode. https://www.google.com/search?q=debugar+php+vscode

Infelizmente estou com problemas em instalar xdebug no sistema operativo… Realizo todos os procedimentos mas quando executo a página de test com phpinfo não mostra lá que foi instalado mesmo sem ter dado nenhum erro

Olá Amigo! Um problema com banco de dados pode ser algo muito abrangente, pois existe diversos fatores para este problema por exemplo: Servidor MySQL, Senha de Acesso ou Conexão através do PHP.
Olhando seu código acredito que seja a função que você está utilizando no PHP para se conectar no MySQL, pois a função mysqli_connect() só está disponível nas versões **4 e 5 ** do PHP. Considerando que você esteja com uma versão mais recente do PHP você deverá utilizar a classe PDO do PHP
Documentação do PDO

Exemplo
$conexao = new PDO(‘mysql:host=localhost;dbname=test’, $user, $pass);

Reiniciou o Apache?

Vale muito investir em conseguir isso, não é
difícil. Debugando fica muito mais fácil descobrir a maioria dos problemas que acontecer.

Obrigado pela dica, já consegui resolver o problema Xdebug e também da conexão com a base de dados, mas continuo sem conseguir inserir dados na tabela da base de dados… Resolvi da seguinte maneira os dois problemas citados:

  • Para resolver a falta de conexão com o servidor Mysql tive que desinstalar o XAMPP e instalei e configurei separadamente o Apache, phpmyadmin e o PHP7.4.14 e mantive o servidor mysql que já estava na máquina (Linux mint). Após isso já conseguia estabelecer conexão com usuário root que configurei ao instalar o servidor mysql…
  • Em relação ao Xdebug, penso que havia uma confusão com as versões do php no meu sistema, porque no Xampp tinha uma versão e no SO tinha outra versão e quando executava o arquivo que continha o código que ia executar o phpinfo() ele pegava um deles, penso que o problema foi esse…

Ao adicionar o breackpoint na linha do ficheiro e de seguida executando o código não houve um retorno em relação ao Xdebug. Em que linha deveria inserir o brackpoint exatamente? Provavelmente estaria a colocar na linha errada
Mesmo estabelecendo a comunicação com a base de dados, ainda continuo sem inserir dados executando o projecto acima. Obs: não alterei o código de conexão, apenas fiz uma revisão na query sql…

Obrigado pela dica, tentei criar um miniprojecto para poder testar a conexão e métodos de inserção e deu resultado com o mysqli… Acredito que seja problema do proprio código falei com instrutor do curso, mas não me deu feedback :exploding_head::exploding_head: