Resumo : neste tutorial mostraremos como usar PHP PDO para inserir dados em tabelas SQLite.
Usaremos a tabela de projetos e tarefas que criamos no tutorial de criação de tabela .
Para inserir dados em uma tabela, siga estas etapas:
- Conecte-se ao banco de dados SQLite criando uma nova instância PDO com o caminho para o arquivo do banco de dados SQLite.
- Componha uma instrução INSERT . Se você deseja fornecer os valores para a
INSERT
instrução, use os espaços reservados nomeados no formulário:name
quename
é o parâmetro para o qual você fornecerá o valor. - Chame o
prepare()
método do objeto PDO para preparar aINSERT
instrução para execução. Este método retorna umPDOStatement
objeto. - Vincule valores aos parâmetros chamando o
bindValue()
método doPDOStatement
objeto. - Execute a instrução chamando o
execute()
método doPDOStatement
objeto. - Caso a tabela tenha uma coluna de incremento automático gerada como chave primária , você pode obter o id inserido chamando o
lastInsertId()
método do objeto PDO.
A SQLiteInsert
classe a seguir possui dois métodos para inserir dados em tabelas. O insertProject()
método insere um novo projeto na projects
tabela e o insertTask()
método insere uma nova tarefa na tasks
tabela.
<?php
namespace App;
/**
* PHP SQLite Insert Demo
*/
class SQLiteInsert {
/**
* PDO object
* @var \PDO
*/
private $pdo;
/**
* Initialize the object with a specified PDO object
* @param \PDO $pdo
*/
public function __construct($pdo) {
$this->pdo = $pdo;
}
/**
* Insert a new project into the projects table
* @param string $projectName
* @return the id of the new project
*/
public function insertProject($projectName) {
$sql = 'INSERT INTO projects(project_name) VALUES(:project_name)';
$stmt = $this->pdo->prepare($sql);
$stmt->bindValue(':project_name', $projectName);
$stmt->execute();
return $this->pdo->lastInsertId();
}
/**
* Insert a new task into the tasks table
* @param type $taskName
* @param type $startDate
* @param type $completedDate
* @param type $completed
* @param type $projectId
* @return int id of the inserted task
*/
public function insertTask($taskName, $startDate, $completedDate, $completed, $projectId) {
$sql = 'INSERT INTO tasks(task_name,start_date,completed_date,completed,project_id) '
. 'VALUES(:task_name,:start_date,:completed_date,:completed,:project_id)';
$stmt = $this->pdo->prepare($sql);
$stmt->execute([
':task_name' => $taskName,
':start_date' => $startDate,
':completed_date' => $completedDate,
':completed' => $completed,
':project_id' => $projectId,
]);
return $this->pdo->lastInsertId();
}
}
Linguagem de código: PHP ( php )
No insertTask()
método, em vez de vincular valores, passamos os valores inseridos como um array para o execute()
método.
Usamos o seguinte código no arquivo index.php para inserir projetos e suas tarefas associadas na tabela de projetos e tarefas.
<?php
require 'vendor/autoload.php';
use App\SQLiteConnection;
use App\SQLiteInsert;
$pdo = (new SQLiteConnection())->connect();
$sqlite = new SQLiteInsert($pdo);
// insert a new project
$projectId = $sqlite->insertProject('PHP SQLite Demo');
// insert some tasks for the project
$sqlite->insertTask('Prepare the sample database schema', '2016-06-01', '2016-06-01', 1, $projectId);
$sqlite->insertTask('Create new tables ', '2016-05-01', null, 0, $projectId);
$sqlite->insertTask('Insert some sample data', '2016-05-01', '2016-06-02', 1, $projectId);
// insert a second project
$projectId = $sqlite->insertProject('Mastering SQLite');
// insert the tasks for the second project
$sqlite->insertTask('Go to tutorials.acervolima.com', '2016-06-01', null, 0, $projectId);
$sqlite->insertTask('Read all the tutorials.', '2016-06-01', null, 0, $projectId);
$sqlite->insertTask('Use Try It page to practice the SQLite commands.', '2016-06-01', null, 0, $projectId);
$sqlite->insertTask('Develop a simple SQLite-based application', '2016-06-15', null, 0, $projectId);
Linguagem de código: PHP ( php )
Neste tutorial, mostramos como usar o PDOStatement para inserir dados nas tabelas SQLite.