コード例 #1
0
ファイル: QueryBuilder.php プロジェクト: EchoWine/database
 /**
  * Execute the query
  *
  * @param string $q query sql
  * @param array $p array of binding values
  * @return object result of the query
  */
 public function query(string $q, array $p = NULL)
 {
     if ($p == null) {
         $p = $this->builder->getPrepare();
     }
     return empty($p) ? DB::query($q) : DB::execute($q, $p);
 }
コード例 #2
0
ファイル: BasicTest.php プロジェクト: EchoWine/database
 public function testTransaction()
 {
     # --------------------------------------------------------------------------
     DB::query("TRUNCATE users");
     # --------------------------------------------------------------------------
     # Transaction:success
     DB::beginTransaction();
     DB::execute("INSERT INTO users (username,password) VALUES (:u1,:p1)", [':u1' => 'admin', ':p1' => 'admin']);
     DB::commit();
     # --------------------------------------------------------------------------
     # Transaction:error
     DB::beginTransaction();
     DB::execute("INSERT INTO users (username,password) VALUES (:u1,:p1)", [':u1' => 'admin', ':p1' => 'admin']);
     DB::rollback();
     # Check
     $this->assertEquals(DB::count(DB::query("SELECT * FROM users")), 1);
     # --------------------------------------------------------------------------
     # Transaction in a closuure
     DB::transaction(function () {
         DB::query("DELETE FROM user WHERE id = 1");
         throw new \Exception("Some goes wrong, must rollback");
     });
     # Check
     $this->assertEquals(DB::count(DB::query("SELECT * FROM users")), 1);
 }