ホームページ > バックエンド開発 > PHPチュートリアル > discuz で ct コールを記述する方法

discuz で ct コールを記述する方法

WBOY
リリース: 2016-06-23 13:48:33
オリジナル
1153 人が閲覧しました

以下のコードを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);?>
ログイン後にコピー


以下はエラープロンプトです


ディスカッションへの返信(解決策)

C: :t('#portal_category')、# 記号を追加しないでください。プラグイン ディレクトリ内のテーブル モデルであると見なされ、そのテーブルがないことを示すエラーが報告されます。 model
例: C::t('#qqconnect#common_member_qqconnect') ->insert($insert_arr);
discuz は自動的にディレクトリ sourcepluginqqconnecttable に移動して、テーブル モデル ファイル 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 "
";
ログイン後にコピー
ログイン後にコピー

C::t('#portal_category'), # 記号を追加しないでください。プラグイン ディレクトリ内のテーブル モデルであると認識され、エラーが報告され、そのテーブル モデルがありません
例: C::t('# qqconnect#common_member_qqconnect')->insert($insert_arr);
discuz は自動的にディレクトリ sourcepluginqqconnecttable に移動してテーブル モデル ファイル 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 "
";
ログイン後にコピー
ログイン後にコピー



上記の方法では、fetch_all(1) に平方数がある場合、出力できますが、データは 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);?>
ログイン後にコピー

ええと...このテーブル モデルにはすべてのデータをクエリするメソッドはないと言いましたが、fetch と fetch_all の両方に条件が必要であり、その条件は主キーの catid であるため、すべてのデータをクエリするには DB Of を使用します。もちろん、このテーブル内のすべてのデータをクエリすることもできます。モデル内のすべてのメソッドをクエリするメソッドを作成します
例:sourceclasstabletable_portal_category.php を開き、クラス (table_portal_category) に次のメソッドを追加します

public function my_fetch_all(){		return DB::fetch_all("SELECT * FROM %t",array($this->_table));	}
ログイン後にコピー
ログイン後にコピー

呼び出し: $data = C ::t('portal_category')->my_fetch_all(); //パラメータは必要ありません
ただし、私はまだ DB を使用して直接操作することに慣れており、その方が柔軟です

えー... 言いましたねその前に、このテーブル モデル内のすべてのデータをクエリするメソッドはありません。 fetch と fetch_all の両方に条件が必要です。条件は主キーの catid であるため、DB を使用してすべてのデータをクエリするメソッドを記述することもできます。テーブル モデル内のすべてのデータをクエリします
例: sourceclasstabletable_portal_category.php を開き、クラス (table_portal_category) に次のメソッドを追加します

public function my_fetch_all(){		return DB::fetch_all("SELECT * FROM %t",array($this->_table));	}
ログイン後にコピー
ログイン後にコピー

呼び出し: $data = C::t('portal_category')->my_fetch_all() ;//パラメータは必要ありません
ただし、私はまだ DB を使用して直接操作することに慣れており、その方が柔軟性があります


それから、DB も使用します
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート