Make a better database interactions

This commit is contained in:
Gregorio Chiko Putra 2017-08-31 15:09:43 +07:00
parent a075e1c36e
commit 031a188f5b
3 changed files with 24 additions and 18 deletions

View File

@ -30,6 +30,7 @@ class Post extends \Core\Model
if ($stmt = $db->query($sql)) { if ($stmt = $db->query($sql)) {
$result = $stmt->fetchAll(\PDO::FETCH_ASSOC); $result = $stmt->fetchAll(\PDO::FETCH_ASSOC);
// For tests
return true; return true;
} }
return false; return false;
@ -60,16 +61,16 @@ class Post extends \Core\Model
} }
} }
public function entry($fields, $vals) public function entry($args)
{ {
if (count($fields) && count($vals) && count($fields) === count($vals)) { if (count($args)) {
$keys = '`'.implode('`, `', $fields).'`'; $keys = '`'.implode('`, `', array_keys($args)).'`';
$x = 1; $x = 1;
$values = ''; $values = '';
foreach ($vals as $val) { foreach ($args as $field) {
$values .= '?'; $values .= '?';
if ($x < count($vals)) { if ($x < count($args)) {
$values .= ', '; $values .= ', ';
} }
$x++; $x++;
@ -84,7 +85,7 @@ class Post extends \Core\Model
$x = 1; $x = 1;
foreach ($vals as $val) { foreach ($args as $val) {
$query->bindValue($x, urldecode($val)); $query->bindValue($x, urldecode($val));
$x++; $x++;
} }

View File

@ -5,20 +5,18 @@ use App\Config;
abstract class Model abstract class Model
{ {
protected static $dsn; protected static $conn = null;
protected static function connectDB() protected static function connectDB()
{ {
static $conn = null;
try { try {
if (!$conn) { if (!self::$conn) {
$dsn = 'mysql:host='.Config::DB_HOST.';dbname='.Config::DB_DB; $dsn = 'mysql:host='.Config::DB_HOST.';dbname='.Config::DB_DB;
$conn = new \PDO($dsn, Config::DB_UNAME, Config::DB_PWD); self::$conn = new \PDO($dsn, Config::DB_UNAME, Config::DB_PWD);
$conn->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); self::$conn->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
} }
return $conn; return self::$conn;
} catch (PDOException $e) { } catch (PDOException $e) {
echo $e->getMessage(); echo $e->getMessage();
} }

View File

@ -7,18 +7,25 @@ class PostTest extends \PHPUnit\Framework\TestCase
* *
* @test * @test
*/ */
public function showDataSuccess() public function databaseInteractionsSuccess()
{ {
$post = new Post(); $post = new Post();
$this->assertTrue($post->showAll()); $this->assertTrue($post->showAll());
$fields = ['category', 'expired_at', 'creator', 'content']; $args = [
$values = ['3', '2017-09-02', '2', 'barbarbarbarbarbarbar!']; 'category' => 3,
'expired_at' => '2017-09-02',
'creator' => 2,
'content' => 'barbarbarbarbarbarbar!'
];
$this->assertTrue($post->entry($fields, $values)); $this->assertTrue($post->entry($args));
$args = ['category' => 5, 'content' => 'foofoofoofoo!']; $args = [
'category' => 5,
'content' => 'foofoofoofoo!'
];
$this->assertTrue($post->update($args, 1)); $this->assertTrue($post->update($args, 1));