使用sql创建数据库查询

时间:2011-09-21 09:17:38

标签: php mysql sql frameworks atk4

是否可以使用dsql()的任何方法进行查询?

类似的东西:

$dq=$this->api->db->dsql()->execute('insert into table xx (field1,field2) values ('a','b')');

由于

2 个答案:

答案 0 :(得分:3)

DSQL 现在已重构为单独的库:https://git.io/dsql

$this->api->db->dsql()->table('table')->set('field1','a')->set('field2','b')->do_insert();

当然你也可以使用

$this->api->db->dsql()->table('table')->set($associative_array)->do_insert();

答案 1 :(得分:1)

罗马人已经展示了一个插入物的例子。您可以选择这样的数据数组(注意debug()是可选的,并将在页面顶部输出生成的sql语句)

   $db=$this->api->db->dsql()->table('table1 x')
             ->field('x.col1')
         ->field('sum(x.col2) col2') 
  //         ->debug()
         ->join('table2 y','x.id=y.some_id')
         ->where('x.col3','Y')
         ->where('x.col4',$this->auth->api->get('id'))
         ->group('x.col2')
                     ->order('x.col1')
         ->do_getAll();

然后遍历结果集以执行某些操作

   foreach ($db as $row) {
      if (is_array($row)) {
         //do something here with row['col1'], row['col2']            
      }
    }

只需选择一个值

   $db=$this->api->db->dsql()->table('table1 x')
             ->field('x.col1')
         ->where('x.col2,'constant')
         ->do_getOne();

您可以更新记录

           $this->api->db->dsql()->table('table1 x')
             ->where('id',$somevariable)
             ->set('col1',$somevalue)
             ->debug()
             ->do_update();

并删除记录

            $this->api->db->dsql()->table('table1 x')
             ->where('id',$somevariable)
             ->do_delete();

在可能的情况下,最好使用下面的模型来保存您的数据,但ATK4的优点是它不会妨碍您,如果需要,您可以在页面的任何位置执行SQL以获得简单的结果。

       $s=$p->add('Model_Story')->loadData($story);
       $s->set('points', $value);
       $s->update();