我在discuz根目錄下建了一個名為test.php的檔案,主要是仿製forum.php這個檔案裡面的內容,有些刪了,代碼如下
fetch('catname');while($value=DB::fetch($siteuniqueid)){$data[]=$value;}print_r($data);echo $data[0];?>
建這個檔案的目錄是做測試用的,比如有一個表portal_category,裡面有一個欄位catname,我想用這個建立檔案做實驗,列印出catname字值下的所有的值,但是在地址欄中輸入http://localhost/test.php 後,結果是空白,但不報錯,不知為啥
回複討論(解決方案)
本人也是個菜鳥,最開始遇到過變白的原因變數沒加 $,後來是函式宣告的那個檔案沒有引進來。。
自己在認為可能有錯的地方 echo "" 一些東西,看看具體是哪錯了,慢慢試把。。
本人也是個菜鳥,最開始遇到過變白的原因變數沒加 $,後來是函式宣告的那個檔案沒有引進來。。
自己在認為可能有錯的地方 echo "" 一些東西,看看具體是哪錯了,慢慢試把。。
可是我都加了,這是其一,另外你說慢慢試試,用不著提醒吧,象這種沒啥意思的文章盡量別回.有意義嗎?
建discuz的入口檔案,只需要如下兩句
require_once './source/class/class_core.php';C::app()->init();
你沒有C::app()->init();
本人也是個菜鳥,最開始遇到過變白的原因變數沒加 $,後來是函式宣告的那個檔案沒有引進來。。
自己在認為可能有錯的地方 echo "" 一些東西,看看具體是哪錯了,慢慢試把。。
可是我都加了,這是其一,另外你說慢慢試試,用不著提醒吧,象這種沒啥意思的文章盡量別回.有意義嗎?
sorry
建discuz的入口檔案,只需要如下兩句
require_once './source/class/class_core.php';C::app()->init();
你沒有C::app()->init();
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');
fetch括弧裡面只能是主鍵id,也就說只能為數字(可以查看\source\class\discuz\discuz_table.php裡面的fetch)
用C類執行後不需要,返回的不是資源類型,你不需要用DB::fetch
實際上只有用DB::query查詢的語句,返回的才是資源類型
所以,你應該改為:
$data = C::t('portal_category')->fetch(1);
print_r($data);
$siteuniqueid = C::t('portal_category')->fetch('catname');
fetch括弧裡面只能是主鍵id,也就說只能為數字(可以查看\source\class\discuz\discuz_table.php裡面的fetch)
用C類執行後不需要,返回的不是資源類型,你不需要用DB::fetch
實際上只有用DB::query查詢的語句,返回的才是資源類型
所以,你應該改為:
$data = C::t('portal_category')->fetch(1);
print_r($data);
這回行了,下面是正確的代碼,還有一點有疑惑:你說 實際上只有用DB::query查詢的語句,返回的才是資源類型
但是My Code中沒有去掉DB::query為啥還能正確列印呢
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');
fetch括弧裡面只能是主鍵id,也就說只能為數字(可以查看\source\class\discuz\discuz_table.php裡面的fetch)
用C類執行後不需要,返回的不是資源類型,你不需要用DB::fetch
實際上只有用DB::query查詢的語句,返回的才是資源類型
所以,你應該改為:
$data = C::t('portal_category')->fetch(1);
print_r($data);
這回行了,下面是正確的代碼,還有一點有疑惑:你說 實際上只有用DB::query查詢的語句,返回的才是資源類型
但是My Code中沒有去掉DB::query為啥還能正確列印呢
init();$data = C::t('portal_category')->fetch(1);while($value=DB::fetch($siteuniqueid)){$data[]=$value;}print_r($data);?>
$siteuniqueid此參數已經沒有了,而且你的C::t('portal_category')->fetch(1);返回的數組,就是用$data存放的,所以你的while是沒有用的
若想擷取表中全部資料,就用DB類操作吧,因為discuz封裝的表模型中(portal_category這個表)是沒有擷取全部資料的方法
DB::fetch_all('SELECT * FROM %t',array('portal_category'));
確實是這樣,真想再給你加分,下次吧,下次給的分更多