Example #1
0
 public function testSimpleQuery()
 {
     # --------------------------------------------------------------------------
     # Create table and truncate
     DB::query("CREATE TABLE IF NOT EXISTS users (\n    \t\tid INT(11)  AUTO_INCREMENT,\n    \t\tusername VARCHAR(55),\n    \t\tpassword text,\n    \t\tPRIMARY KEY (id)\n    \t)");
     DB::query("TRUNCATE users");
     # --------------------------------------------------------------------------
     # Insert some data
     DB::execute("INSERT INTO users (username,password) VALUES (:u1,:p1),('guest','guest')", [':u1' => 'admin', ':p1' => 'admin']);
     # Get "first" of last insert id
     $this->assertEquals(1, DB::getInsertID());
     # --------------------------------------------------------------------------
     # Check results
     $results = DB::fetch("SELECT * FROM users");
     $this->assertEquals($results[0], ['id' => 1, 0 => 1, 'username' => 'admin', 1 => 'admin', 'password' => 'admin', 2 => 'admin']);
     # --------------------------------------------------------------------------
     # Check count
     $this->assertEquals(DB::count(DB::query("SELECT * FROM users")), 2);
 }
Example #2
0
 /**
  * Execute the query and insert a record
  *
  * @param array $data array of elements to insert (name column => value column)
  * @param bool $ignore ignore the duplicates(true) or reproduce an error(false)
  * @return int last id insert
  */
 public function insert($data = [], bool $ignore = false)
 {
     $t = clone $this;
     $data = empty($t->getBuilder()->getInsert()) ? $data : array_merge($data, $t->getBuilder()->getInsert());
     if (empty($data)) {
         return 0;
     }
     if (is_object($data) && $data instanceof Closure) {
         $c = $data();
         $t->builder->prepare = array_merge($t->builder->prepare, $c->builder->prepare);
         $values = DB::SQL()::VALUES($c->SQL_UNION());
         $columns = DB::SQL()::INSERT_COLUMNS($c->builder->select);
     } else {
         if (!isset($data[0])) {
             $data = [$data];
         }
         $values = [];
         foreach ($data as $k) {
             $value = [];
             foreach ($k as $v) {
                 $value[] = $t->setPrepare($v);
             }
             $values[] = DB::SQL()::VALUES($value);
         }
         $values = DB::SQL()::INSERT_VALUES($values);
         $columns = DB::SQL()::INSERT_COLUMNS(array_keys($data[0]));
     }
     $q = DB::count($t->query(DB::SQL()::INSERT($this->getBuilderTable(), $columns, $values, $ignore)));
     # Get all ID from last Insert
     # Granted with InnoDB
     return range($i = DB::getInsertID(), $i + $q - 1);
 }