ホームページ  >  記事  >  バックエンド開発  >  このようにエントリーファイルを作成すると何が問題になるのでしょうか?

このようにエントリーファイルを作成すると何が問題になるのでしょうか?

WBOY
WBOYオリジナル
2016-06-23 13:48:44813ブラウズ

discuz ルート ディレクトリに test.php という名前のファイルを作成しました。主に forum.php ファイルの内容をコピーし、一部を削除しました。コードは次のとおりです

<?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';$siteuniqueid = C::t('portal_category')->fetch('catname');while($value=DB::fetch($siteuniqueid)){	$data[]=$value;	}print_r($data);echo $data[0];?>

このファイルが作成されたディレクトリはテスト用です。たとえば、portal_category というフィールドがあり、この新しいファイルを使用して、catname という単語の値の下にあるすべての値をテストして出力したいとします。アドレスバーに/test.php、結果は空白ですが、エラーは報告されません、理由がわかりません


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

私も最初は、初心者です。 $を付けないと変数が白くなる原因は後ほど調べたところ、関数を宣言したファイルが取り込まれませんでした。 。

何か問題があるかもしれないと思う箇所を「エコー」して、正確に何が問題なのかを確認し、ゆっくり試してください。 。

私も初心者ですが、最初は$を付けないと変数が白くなる原因に遭遇しましたが、その後、関数が宣言されているファイルがインポートされませんでした。 。

何か問題があるかもしれないと思う箇所を「エコー」して、正確に何が問題なのかを確認し、ゆっくり試してください。 。


でも、全部追加しました、これもそのうちの 1 つです。また、リマインドする必要はありません。意味のない投稿には返信しないようにしてください。

エントリーファイルを作成してください。 discuz の場合、必要なのは次の 2 つの文です

require_once './source/class/class_core.php';C::app()->init();

You don't have C::app()->init(); 私も最初はその理由に遭遇しました。 $を追加せずに変数が白くなり、その後関数になったのはなぜですか 宣言されたファイルはインポートされませんでした。 。

何か問題があるかもしれないと思う箇所を「エコー」して、正確に何が問題なのかを確認し、ゆっくり試してください。 。

でも、全部追加しました。これはそのうちの 1 つです。あなたは、ゆっくり試してください、催促する必要はありません、そのような無意味な投稿には返信しないようにしてください、と言ったのでしょうか?


ごめんなさい

discuz のエントリ ファイルを作成するには、次の 2 つの文だけが必要です
require_once './source/class/class_core.php';C::app()->init();

C::app()->init(); はありません

<?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();$siteuniqueid = C::t('portal_category')->fetch('catname');while($value=DB::fetch($siteuniqueid)){	$data[]=$value;	}print_r($data);?>

このように追加しましたが、まだ印刷できません。空白で、エラー メッセージはありません

$siteuniqueid = C::t('portal_category')->fetch('catname');

フェッチ括弧には主キー ID のみを含めることができますこれは、数値のみであることを意味します (sourceclassdiscuzdiscuz_table.php でフェッチを確認できます)
C クラスでの実行後に返されるものは、DB::fetch を使用する必要はありません。
実際、DB::query を使用するクエリ ステートメントのみがリソース タイプを返します。 したがって、次のように変更する必要があります。

$data = C::t('portal_category')->fetch(1); ($data);


$siteuniqueid = C::t('portal_category')->fetch('catname ');
フェッチ括弧には主キー ID のみを含めることができます。つまり、数値のみを指定できます。 (sourceclassdiscuzdiscuz_table.php でフェッチを確認できます)
C クラスで実行した後は必要ありません。 ::fetch を使用する必要はありません。 DB::query を使用したクエリ ステートメントはリソース タイプを返します
したがって、次のように変更する必要があります。

$data = C::t('portal_category')->fetch(1) ;

print_r($data);今回は正しく動作します。もう 1 つの疑問があります。DB::query を使用するクエリ ステートメントのみがリソース タイプを返すと言っていますが、DB::query を削除せずに正しく出力できるのはなぜでしょうか。コード

<?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(1);while($value=DB::fetch($siteuniqueid)){	$data[]=$value;	}print_r($data);?>


fetch(1) に入力したものは 1 です。このテーブル内のすべてのデータを出力したい場合はどうすればよいですか?
fetch('catid'') を書いてみます
表示される出力結果は Array です



$siteuniqueid = C::t('portal_category')->fetch('catname');
内部にあるのはフェッチ括弧のみです 主キー ID にすることができます。つまり、数値のみを指定できます ( sourceclassdiscuzdiscuz_table.php でフェッチを確認できます)
C クラスで実行した後は必要ありません。そのため、DB::fetch を使用する必要はありません 実際には、 DB::query のステートメントはリソース タイプを返すため、次のように変更する必要があります。

$data = C::t('portal_category')->fetch(1);
print_r($data);

今度は正しく動作します。次のコードが正しいコードです。もう 1 つ疑問があります。実際には、DB::query を使用するクエリ ステートメントのみがリソース タイプを返すと言っていますが、DB:: は私のコードから削除されていません。クエリがまだ正しく出力されるのはなぜですか?

$siteuniqueid パラメーターは使用できなくなり、C::t('portal_category')->fetch(1); によって返される配列は $data に保存されるため、while は役に立ちません

テーブル内のすべてのデータを取得するには、DB クラス操作を使用します。これは、discuz (portal_category テーブル) によってカプセル化されたテーブル モデル内のすべてのデータを取得するメソッドがないためです
DB::fetch_all('SELECT * FROM %t', array ('portal_category'));

本当です、本当にもっとポイントをあげたいです、次回はもっとポイントをあげます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。