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

Insert com exec retornando bool(false)

Apesar das sintaxes aparentemente estarem corretas, e da tabela ter sido criada, ao tentar executar o insert é retornado bool(false). Até colei essa linha abaixo da string de conexão (conforme orientação do Vinicius para outro colega), e acusa erro no $pdo->exec.

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Não consigo identificar onde pode estar o erro.

Arquivo de conexão (que tb cria a tabela):

<?php

$caminhoBanco = __DIR__ . '/banco.sqlite';
$pdo = new PDO('sqlite:' . $caminhoBanco);

echo $caminhoBanco.PHP_EOL;

var_dump($pdo->exec('CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT, birth_date TEXT)'));

Arquivo inserir-aluno.php:

<?php

use Alura\Pdo\Domain\Model\Student;

require_once 'vendor/autoload.php';

$databasePath = __DIR__ . '/banco.sqlite';
$pdo = new PDO('sqlite:' . $databasePath);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$student = new Student(null, 'Elvio Amaral', new \DateTimeImmutable('1991-12-21'));

$sqlInsert = "INSERT INTO student (name, birth_date) VALUES ('{$student->name()}', '{$student->birthDate()->format('Y-m-d')}');";

echo $sqlInsert . PHP_EOL;

var_dump($pdo->exec($sqlInsert));

Retorno do insert:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeObs: mesmo sem o var_dump() no exec retorna o mesmo erro.

Tabela no banco:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Vacilo identificado..rss O nome da tabela no insert estava incorreto (student e não students como foi criada).

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software