Get Messages

This commit is contained in:
Dusk 2021-12-10 23:53:41 +01:00
parent 6538ccd525
commit 6c0a6bc500
1 changed files with 35 additions and 24 deletions

View File

@ -1,48 +1,59 @@
<?php <?php
createDB(); $db = createDB();
$test = getMessages($db, ['id_user' => 1]);
var_dump($test);
function createDB($db_name = 'guestbook.db'): SQLite3 {
// Can't create table if it already exists
$exists = file_exists($db_name);
$db = new SQLite3($db_name);
if(!$exists) {
$db->exec('CREATE TABLE user
(id_user INTEGER PRIMARY KEY,
username TEXT NOT NULL UNIQUE,
password TEXT)'
);
$db->exec('CREATE TABLE message
(id_msg INTEGER PRIMARY KEY,
id_user INT,
content TEXT NOT NULL,
date INT,
FOREIGN KEY (id_user) REFERENCES user (id_user))'
);
}
function createDB(): SQLite3 {
$db = new SQLite3('guestbook.db');
$db->exec('CREATE TABLE user
(id_user INTEGER PRIMARY KEY,
username TEXT NOT NULL UNIQUE,
password TEXT)'
);
$db->exec('CREATE TABLE message
(id_msg INTEGER PRIMARY KEY,
id_user INT,
content TEXT NOT NULL,
date INT,
FOREIGN KEY (id_user) REFERENCES user (id_user))'
);
return $db; return $db;
} }
// getMessages(['id' => 34, 'since' => 383489289424]) function getMessages(SQLite3 $db, array $filter = [], int $limit = 25) {
function getMessages(SQLite3 $db, int $limit = 25, array $filter = []) {
// Apply filters // Apply filters
$append_string = ''; $append_string = '';
$verb = 'WHERE'; $verb = 'WHERE';
foreach ($filter as $key => $value) { foreach($filter as $key => $value) {
$to_append = match($key) { $to_append = match($key) {
'id_msg' => "$verb $key IN (:$key)", 'id_user' => "$verb $key = :$key",
// TODO // TODO
}; };
if ($to_append) { if($to_append) {
$append_string .= " $to_append"; $append_string .= " $to_append";
$verb = 'AND'; $verb = 'AND';
} }
} }
// Prepare statement
$query = 'SELECT * FROM message' . $append_string; $query = 'SELECT * FROM message' . $append_string;
var_dump($query);
$statement = $db->prepare($query); $statement = $db->prepare($query);
foreach ($filter as $key => $value) { foreach($filter as $key => $value) {
$statement->bindValue($key, $value); $statement->bindParam($key, $value);
} }
return $statement->execute(); var_dump($statement);
return $statement->execute()->fetchArray(SQLITE3_ASSOC);
} }