Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problemas ao executar as queries

Olá! Estou fazendo um projeto com base no conteúdo do curso, e nele não estou conseguindo fazer inserts, pois os métodos prepare() e exec() do pdo estão retornando false.

No projeto tenho as classes Cliente, Produto e Pedido. No momento estou tentando fazer os inserts da classe Cliente. Tenho no banco uma tabela para cada uma dessas classes.

Além disso, tenho uma classe "DatabaseConnection" para fazer a conexão com o banco.

Classes

Cliente

class Cliente
{
    private $idCliente;
    private $nome;
    private $email;
    private $celular;
    static public $quantidadeClientes;

    public function __construct(?int $idCliente, string $nome, string $email, string $celular)
    {
        $this->idCliente = $idCliente;
        $this->nome = $nome;
        $this->email = new Email($email);
        $this->celular = $celular;
        Cliente::$quantidadeClientes++;
    }

    ...
}

DatabaseConnection

<?php

namespace SmallShop\Infrastructure;

use PDO;

class DatabaseConnection  
{
    public static function connectDatabase(): PDO
    {
        $pdo = new PDO("sqlite:" . __DIR__ . "/../../database.sqlite");
        var_dump($pdo);
        return $pdo;
    }
}

Script dos inserts

<?php

use SmallShop\Domain\Models\Cliente;
use SmallShop\Infrastructure\DatabaseConnection;

require_once 'vendor/autoload.php';

$pdo = DatabaseConnection::connectDatabase();

$cliente1 = new Cliente(null, "Teste", "teste@gmail.com", '098998763');

$sqlInsertClient = "INSERT INTO `clientes` (idCliente, nome, email, celular) VALUES (null, {$cliente1->getNome()}, {$cliente1->getEmail()}, {$cliente1->getCelular()});";

$statement = $pdo->prepare($sqlInsertClient);
$statement->bindValue(1, $cliente1->getNome());
$statement->bindValue(2, $cliente1->getEmail());
$statement->bindValue(3, $cliente1->getCelular());

$statement->execute();

Não coloquei toda a classe "cliente" pois ela está meio extensa, mas seus métodos são basicamente os getters e setters.

Será que alguém consegue me ajudar?

1 resposta
solução!

Fala, Thiago!

No nosso treinamento de PDO a gente viu algumas formas de identificar os erros. Já chegou nessa parte? :-)