![](https://jezgra.online/wp-content/uploads/2021/06/dino.jpg)
Sqlite
SQLite je RDBMS (relational database management system) baza podataka
napisana u C programskom jeziku. Sqlite se koristi gotovo svugdje od
iOS-a do Firefox preglednika.
Glavna uočljiva razlika je u tome što se baza nalazi u .db datoteci.
Obično se baza (npr. MariaDB) nalazi na poslužitelju, gdje je pokrenuta kao
servis, sa otvorenim port-om 3306.
PDO
PDO (PHP Data Objects) php sučelje za pristup podacima u bazama podataka
sa podrškom za više različitih baza, pa tako i našeg Sqlite-a.
Navedeno sučelje također pruža i zaštitu od SQL-Injection napada preko
takozvanoga prepared statements načina unosa SQL naziva.
SQL-Injection je kada vam netko pokušava ‘prošvercati’ maliciozni SQL
uz vaš. Bez validacije ili prepared statements, maliciozni SQL se izvršava
odmah nakon vašega.
Prije svega potrebno je provjeriti ‘/etc/php/php.ini’ datoteku i
od-komentirati:
extension=sqlite3 extension=pdo_sqlite
U PHP-u možemo provjeriti da li je ekstenzija aktivna:
if (!extension_loaded('sqlite3')) { error_log('Nema sqlite3!'); }
Ako nije instaliramo:
sudo pacman -S php-sqlite #na ubuntu/debian: #sudo apt-get install php-sqlite
PDO iniciramo tako da kao argument unesemo putanju datoteke koja će
biti korištena kao baza podataka:
$pdo = new \PDO("sqlite:".__DIR__."/database.db");
Prije unosa, argumente je potrebno validitirati. Ako ne koristite framework, možete preko composer-a ubaciti respect/validation.
Na primjer, da unesemo korisnika, koristimo:
function insertUser($username, $email, $password) { // Pozovi PDO objekt. $pdo = initDatabase(); // SQL sa `prepared statement` varijablama. $sql = "INSERT INTO users(username, email, password, createdAt) VALUES ( :username , :email , :password , datetime('now') )"; $stmt = $pdo->prepare($sql); // Povezivanje varijabli. $data = [ 'username' => $username, 'email' => $email, 'password' => $password, ]; try { // Pokušaj pokrenuti query, ako nema problema, vrati pkid. $stmt->execute($data); $lastId = intval($pdo->lastInsertId()); return $lastId; } catch (\PDOException $e) { // Javi grešku. echo ('ERROR => ' . $e); } // Vrati -1, jer pkid je pozitivni integer. return -1; }
Ostale funkcije (kao i cijeli projekt) možete pronaći na mom github-u:
https://github.com/damir-sijakovic/sqlite3_php_pdo_examples/blob/main/functions.php