+ -
当前位置:首页 → 问答吧 → Zend_Db_Table 如何取得某个字段的值

Zend_Db_Table 如何取得某个字段的值

时间:2007-08-11

来源:互联网

如果用fetchRow的话,相当于执行的是select * from...,我现在希望的是select user_id from...,该如何解决

作者: lzyy   发布时间: 2007-08-11

实际上只能 fetchRow 以后再取字段~~

    protected function _fetch($where = null, $order = null, $count = null, $offset = null)

这是 Zend_Db_Table 的内部取值的方法。

        $select->from($this->_name, $this->_cols, $this->_schema);

这里的 $this->_cols 是所有字段的一个数组。

作者: mikespook   发布时间: 2007-08-11

复制PHP内容到剪贴板
PHP代码:
$rowset = $this->fetchRow($where);
$rowset->name;//该方式就是拿单个数据

作者: xgwork   发布时间: 2007-08-11

看来也只能这样了

作者: lzyy   发布时间: 2007-08-11

这样效率不高,其实还是要先取所有字段。。如果数据量大,最好还是直接用SQL或构建一个Zend_Db_Select对象。

作者: Haohappy   发布时间: 2007-08-11

<?php
//
// SELECT * FROM round_table
//     WHERE noble_title = "Sir"
//     AND first_name = "Robin"
//     ORDER BY favorite_color
//

class RoundTable extends Zend_Db_Table {}

$table = new RoundTable();
$db = $table->getAdapter();

$where = $db->quoteInto('noble_title = ?', 'Sir')
       . $db->quoteInto('AND first_name = ?', 'Robin');

$order = 'favorite_color';

$row = $table->fetchRow($where, $order);
?>

作者: bingquan3846   发布时间: 2007-08-11

To 楼上,楼主是要取一个字段的所有记录,不是一条记录。

作者: Haohappy   发布时间: 2007-08-11

引用:
原帖由 Haohappy 于 2007-8-11 16:23 发表
这样效率不高,其实还是要先取所有字段。。如果数据量大,最好还是直接用SQL或构建一个Zend_Db_Select对象。
如果数据库查询要用到join,就不得不用Zend_Db_Select对象了。。

作者: scauren   发布时间: 2007-08-13

顺便问一下:
复制内容到剪贴板
代码:
<?php
       
// 构造基础的select方法:
$select = $db->select();
$select->from('foo', '*');
$select->order('id');

// ... 限制到第三页,每页包括10行数据
$select->limitPage(3, 10);

//
// 在MySQL/PostgreSQL/SQLite下, 可以得到:
//
// SELECT * FROM foo
//     ORDER BY id ASC
//     LIMIT 10 OFFSET 20
//
上面的例子是:SELECT * FROM foo
如果我要指定其中的字段,
$select->from('foo', '*');应该怎么改呢?

作者: scauren   发布时间: 2007-08-13

$select->from('foo', '*');

foo是表名;
*是要查询的字段名

如果为*的话就是查询整行的数据;

如果查询一个字段可以写成  $select->from('foo', 'username');  这个就是查询foo表中username字段的内容;


如果查询两个或多个个字段可以写成  $select->from('foo', array('username','psword',.......));  这个就是查询foo表中username字段、psword字段等的内容。

作者: come1997   发布时间: 2007-08-13

引用:
原帖由 come1997 于 2007-8-13 16:39 发表
$select->from('foo', '*');

foo是表名;
*是要查询的字段名

如果为*的话就是查询整行的数据;

如果查询一个字段可以写成  $select->from('foo', 'username');  这个就是查询foo表中username字段的内 ...
虽然已经解决,还是谢谢这位朋友:P:P

作者: scauren   发布时间: 2007-08-13

select * ...我是继承了Zend_Db_Table加了
二个方法
setCols( array $cols );
getCols();

Zend_Db_Table的工作流程是,先用adapter里的describeTable把表的结构读出来,这是要查询的字段其实不是 * ,是一个包含了所有字段的数组,在查询之前只要把Zend_Db_Table::_cols;赋值成为你要查询的字段就好了
如:
复制PHP内容到剪贴板
PHP代码:
class My_Table extedns Zend_Db_Table {

    public function setCols ( array $cols ) {
       $this->_cols = $cols;
    }

    public function getCols() {
      return $this->_cols;
    }
 }

 $myTable = new My_Table();
 $myTable->setCols( array( 'id' ) );
 Zend_Debug::dump( $myTable->fetchRow( $where ) );

[ 本帖最后由 jame298 于 2007-8-14 14:25 编辑 ]

作者: jame298   发布时间: 2007-08-14

谢谢jame298,不仅给出了好的解决方法,还熟悉了ZDT的流程

作者: lzyy   发布时间: 2007-08-15

热门下载

更多