Home > Backend Development > PHP Tutorial > discuz中的ct调用到底如何写呢

discuz中的ct调用到底如何写呢

WBOY
Release: 2016-06-23 13:48:33
Original
1153 people have browsed it

下面这段代码是由DB的写法改为Ct 的写法,但是结果出错,也不知哪里写的不对

<?php/** *      [Discuz!] (C)2001-2099 Comsenz Inc. *      This is NOT a freeware, use is subject to license terms * *      $Id: forum.php 33828 2013-08-20 02:29:32Z nemohou $ */define('APPTYPEID', 88);define('CURSCRIPT', 'test');require './source/class/class_core.php';require './source/function/function_forum.php';C::app()->init();$data = $query = C::t('#portal_category')->fetch_all($catid);while($value=$this->fetch_array($data)){	$data[]=$value;	}print_r($data);?>
Copy after login


下面是提示的错误


回复讨论(解决方案)

C::t('#portal_category'),不要加#号,它会认为是插件目录下的表模型,才会报错,提示你没有那个表模型
如:C::t('#qqconnect#common_member_qqconnect')->insert($insert_arr);
discuz会自动去目录\source\plugin\qqconnect\table下找table_common_member_qqconnect.php这个表模型文件

fetch_all($catid),$catid为数组,当也可是是数字
你的while也是不需要的,所以,你可以改成如下试试:

//$catid=1;//$catid=array(1,2,3);$res = C::t('portal_category')->fetch_all($catid);echo "<pre class="brush:php;toolbar:false">";print_r($res);echo "
Copy after login
Copy after login
";

C::t('#portal_category'),不要加#号,它会认为是插件目录下的表模型,才会报错,提示你没有那个表模型
如:C::t('#qqconnect#common_member_qqconnect')->insert($insert_arr);
discuz会自动去目录\source\plugin\qqconnect\table下找table_common_member_qqconnect.php这个表模型文件

fetch_all($catid),$catid为数组,当也可是是数字
你的while也是不需要的,所以,你可以改成如下试试:

//$catid=1;//$catid=array(1,2,3);$res = C::t('portal_category')->fetch_all($catid);echo "<pre class="brush:php;toolbar:false">";print_r($res);echo "
Copy after login
Copy after login
";



上述方法,当fetch_all(1)里面方数字的时候能打印出来,但是只是打出一条数据
我试着打出所有的数据,所以用了fetch_all( $catid)
但打印结果,只是出来一个Array( );
不知哪有问题,
代码如下
<?php/** *      [Discuz!] (C)2001-2099 Comsenz Inc. *      This is NOT a freeware, use is subject to license terms * *      $Id: forum.php 33828 2013-08-20 02:29:32Z nemohou $ */define('APPTYPEID', 88);define('CURSCRIPT', 'test');require './source/class/class_core.php';require './source/function/function_forum.php';C::app()->init();$data = C::t('portal_category')->fetch_all($catid);print_r($data);?>
Copy after login

呃...之前告诉过你,该表模型里面没有查询所有数据的方法,fetch和fetch_all都必须要一个条件,条件就是主键catid,所以用DB来查询所有数据,当然你也可以在该表模型里自己写一个查询所有的方法
如:打开\source\class\table\table_portal_category.php,在类中(table_portal_category)添加如下方法

public function my_fetch_all(){		return DB::fetch_all("SELECT * FROM %t",array($this->_table));	}
Copy after login
Copy after login

调用:$data = C::t('portal_category')->my_fetch_all();//不需要参数
不过,我还是习惯用DB直接操作,比较灵活

呃...之前告诉过你,该表模型里面没有查询所有数据的方法,fetch和fetch_all都必须要一个条件,条件就是主键catid,所以用DB来查询所有数据,当然你也可以在该表模型里自己写一个查询所有的方法
如:打开\source\class\table\table_portal_category.php,在类中(table_portal_category)添加如下方法

public function my_fetch_all(){		return DB::fetch_all("SELECT * FROM %t",array($this->_table));	}
Copy after login
Copy after login

调用:$data = C::t('portal_category')->my_fetch_all();//不需要参数
不过,我还是习惯用DB直接操作,比较灵活


那我也用DB吧,
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template