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?