2010-08-21 42 views
1

我只是無法弄清楚:(致命錯誤:不支持的操作類型

完整的腳本...

線由「此行」 指出的麻煩,我可以REM出來,該腳本會工作,但只有一半:(

require_once("global.php"); 

$kernel->vars['page_struct']['system_page_action_title'] = $kernel->ld['phrase_page_title_statistics']; 

// No categories in archive 
if ($kernel->db->numrows("SELECT `category_id` FROM `" . TABLE_PREFIX . "categories`") == 0) { 
    $kernel->page->message_report($kernel->ld['phrase_no_categories'], M_NOTICE); 
} 
else { 
    $kernel->tp->call("page_statistics"); 
    $kernel->vars['stats'] = array(); 

    // Archive Highs 
    // This line. 
    $kernel->vars['stats'] = $kernel->vars['stats'] + $kernel->db->row("SELECT `file_id` AS `latest_file_id`, `file_name` AS `latest_file_name`, `file_timestamp` AS `latest_file_timestamp` FROM `" . TABLE_PREFIX . "files` ORDER BY `file_id` DESC LIMIT 1"); 
    $kernel->vars['stats']['latest_file_timestamp'] = $kernel->fetch_time($kernel->vars['stats']['latest_file_timestamp'], DF_SHORT); 

    // This line. 
    $kernel->vars['stats'] = $kernel->vars['stats'] + $kernel->db->row("SELECT `file_id` AS `mostdl_file_id`, `file_name` AS `mostdl_file_name`, `file_downloads` AS `mostdl_file_downloads` FROM `" . TABLE_PREFIX . "files` ORDER BY `file_downloads` DESC LIMIT 1"); 
    $kernel->vars['stats']['mostdl_file_downloads'] = $kernel->vars['stats']['mostdl_file_downloads']; 

    // This line. 
    $kernel->vars['stats'] = $kernel->vars['stats'] + $kernel->db->row("SELECT `file_id` AS `leastdl_file_id`, `file_name` AS `leastdl_file_name`, `file_downloads` AS `leastdl_file_downloads` FROM `" . TABLE_PREFIX . "files` ORDER BY `file_downloads` ASC LIMIT 1"); 
    $kernel->vars['stats']['leastdl_file_downloads'] = $kernel->vars['stats']['leastdl_file_downloads']; 

    // This line. 
    $kernel->vars['stats'] = $kernel->vars['stats'] + $kernel->db->row("SELECT `file_id` AS `highrate_file_id`, `file_name` AS `highrate_file_name`, `file_rating` AS `highrate_file_rating`, `file_votes` AS `highrate_file_votes` FROM `" . TABLE_PREFIX . "files` ORDER BY `file_rating` DESC, `file_votes` DESC LIMIT 1"); 
    $kernel->vars['stats']['highrate_file_rank'] = $kernel->archive->construct_file_rating($kernel->vars['stats']['highrate_file_rating'], $kernel->vars['stats']['highrate_file_votes']); 

    // Datastore counters 
    $datastore_keys = array("total_announcements", "total_files", "total_categories", "total_users", "total_downloads", "total_votes", "total_images", "total_comments"); 

    foreach($datastore_keys AS $counter) { 
    $kernel->vars['stats']["$counter"] = $kernel->format_input($kernel->db->item("SELECT `datastore_value` FROM `" . TABLE_PREFIX . "datastore` WHERE `datastore_key` = 'count_" . $counter . "'"), T_NUM); 
    } 

    $kernel->ld['phrase_statistics_message'] = sprintf($kernel->ld['phrase_statistics_message'], $kernel->fetch_time($kernel->config['archive_start'], DF_SHORT), $kernel->archive->format_round_bytes($kernel->db->item("SELECT `datastore_value` FROM `" . TABLE_PREFIX . "datastore` WHERE `datastore_key` = 'count_total_data'"))); 

    $kernel->tp->cache($kernel->vars['stats']); 
} 

$kernel->page->construct_output(R_HEADER, R_FOOTER, false, R_NAVIGATION); 
+0

請重新格式化您的問題並添加用於數據庫處理的庫。謝謝 – 2010-08-21 10:15:44

回答

2

$kernel->db->row數組?我想這是一個對象,你不能添加對象和數組。

2

我們知道$kernel->vars['stats']是一個數組,因爲:

$kernel->vars['stats'] = array(); 

你的問題線隨之而來的:

$kernel->vars['stats']=$kernel->vars['stats'] + $kernel->db->row(...); 

+裝置2個陣列的結合,所以$kernel->db->row(...)必須是一個數組。

是嗎?

+1

你不能添加它們,但你可以這樣合併它們:http://www.php.net/manual/en/language.operators.array.php – 2010-08-21 10:32:02

+0

@Pekka - yikes。謝謝。固定。那麼它一定是右手實體。 – 2010-08-21 10:33:34

0

您似乎期待一個數組作爲row方法的返回值。不知道你的數據庫類,我們不能說這是否是真的,但無論如何,你應該首先檢查返回類型。 (也出現錯誤)

$row = $kernel->db->row("SELECT `file_id` .... "); 

if (is_array($row)) 
$kernel->vars['stats'] = $kernel->vars['stats'] + $row; 
+0

mysql,utf8我絕不是主人:)我是初學者和學習。這個完整的程序有很多錯誤,這是我無法弄清的最後一個錯誤。 – Jeremy 2010-08-21 11:07:50

相關問題