Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

PDO retorna um boolean

Olá, estava fazendo o curso de PDO, quando tentei usar o método exec para executar o comando SQL CREATE TABLE students(id INTEGER PRIMARY KEY, nome TEXT, birth_date TEXT); Quando dei o var_dump do método exec ele retornou bool(false). Pelo que pesquisei, isso significa que algum erro ocorreu na execução do comando, o mesmo se repetiu quando tentei usar o query, para fazer uma consulta em outro arquivos. A estrutura de diretórios é a seguinte:

Pdo |_
      src |_
        Domain |_
            Model |_
                conexao.php (o arquivo do erro no exec)
                insert.php(o arquivo do erro no query)
                Student.php (A classe Student)
                banco.sqlite (o DataBase)
    vendor |_
        composer 
        autoload.php

composer.json

Seguem os códigos:

# conexao.php
<?php

const PATHDB = __DIR__. '/banco.sqlite';

$pdo = new PDO('sqlite:'. PATHDB);

echo "conectei". PHP_EOL;

var_dump($pdo->exec('CREATE TABLE students(id INTEGER PRIMARY KEY, nome TEXT, birth_date TEXT);'));
# insert.php
<?php

const PATHDB = __DIR__. '/banco.sqlite';

$pdo = new PDO('sqlite:'. PATHDB);

echo "conectei". PHP_EOL;

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

O que está errado e como posso resolver?

2 respostas
solução!

Oi Cauê,

Aparentemente o seu código está correto e talvez esteja retornando false por você ter executado a instrução mais de uma vez e já existir esse banco com essa tabela criada. Verifique se você já tem esse banco, juntamente com a tabela dentro dele. Caso não seja isso você avisa aqui novamente.

Obrigado Diego, depois percebi que outro erro no insert.php é que eu entendi mal e em vez de passar como parâmetro o __DIR___ . \banco.sqlite, eu acabei passando como dois parâmetros __DIR__, \banco.sqlite, o que também fazia dar errado. Agora funciona normalmente, obrigado =)