簡體   English   中英

joomla 2.5數據庫未收到查詢?

[英]joomla 2.5 database not receiving queries?

我有php函數,該函數使用db中的模板向用戶發送電子郵件。 問題是最后3個查詢無法正常工作(我從phpmyadmin嘗試過,並且工作正常)。 該代碼可以執行,沒有錯誤,但是沒有獲取足夠的視圖和答復,而是只有空白(db-> loadobjectlist返回null?),並且最后一個更新查詢也不執行任何操作。

這是它最后發送的

請幫助我了解這段代碼有什么問題

$config = JFactory::getConfig();
$mailfrom = $config->get('mailfrom');
$fromname = $config->get('sitename');
$dbprefix = $config->getValue('config.dbprefix');
$database = JFactory::getDBO();

$query = "select u.id, u.email
from ".$dbprefix."users as u
left join ".$dbprefix."djcf_items as i on u.id=i.user_id and i.published=1
where u.sendEmail=1 and TIMESTAMPDIFF(hour,NOW(), u.WeeklyAD)=0
having count(i.id)>0";
$database->setQuery($query);
$users = $database->loadObjectList();

$template_name = 'Weekly ad';
$template_table = 'Weekly table';
$subject = 'Ads Peformance Update';
$template_main = getTemplate($template_name);
$template_table = getTemplate($template_table);

foreach($users as $user){
    $query = "select id, name, image_url, alias, timestampdiff(day, date_start, now()) as days_live
    from ".$dbprefix."djcf_items
    where user_id = ".$user->id." and published=1";
    $database->setQuery($query);
    $items = $database->loadObjectList();
    $template = $template_main;
    foreach($items as $item){
        $query = "select count(distinct v.user) as overall, count(distinct vw.user) as week
        from  ".$dbprefix."visitors as v
        left join ".$dbprefix."visitors as vw on vw.name=v.name and timestampdiff(hour, vw.date, now())<=7*24
        where v.name='".$item->alias.$item->id."'";
        $database->setQuery($query);
        $views = $database->loadObjectList();

        $query = "select count(distinct ia.id) as overall, count(distinct iaw.id) as week
        from  ".$dbprefix."djcf_itemsask as ia
        left join ".$dbprefix."djcf_itemsask as iaw on iaw.id=ia.item_id and timestampdiff(hour, iaw.date, now())<=7*24
        where ia.item_id=".$item->id;
        $database->setQuery($query);
        $replies = $database->loadObjectList();

        $table .= $template_table;
        $imagelink = explode(';',$item->image_url);
        $imagelink = 'http://'.$_SERVER['HTTP_HOST'].'/components/com_djclassifieds/images/'.$imagelink[0];

        $table = str_replace("##ITEM_NAME##", $item->name, $table);
        $table = str_replace("##DAYS##", $item->days_live, $table);
        $table = str_replace("##VIEWS##", $views->overall, $table);
        $table = str_replace("##VIEWS_WEEK##", $views->week, $table);
        $table = str_replace("##REPLIES##", $replies->overall, $table);
        $table = str_replace("##REPLIES_WEEK##", $replies->week, $table);
        $table = str_replace("##ITEM_IMG##", $imagelink, $table);
    }
    $template = str_replace("##WEEKLY_TABLE##", $table, $template);
    SendEmail($mailfrom, $fromname, $user->email, $subject, $template);
    $query = "update ".$dbprefix."users set WeeklyAD=ADDDATE(WeeklyAD, interval 7 day) where id='".$user->id."'";
    $database->setQuery($query);
}

由於loadObjectList()從查詢返回的表記錄中返回PHP對象的索引數組,因此您似乎在選擇查詢中使用了錯誤的函數。 要使用此功能,您可以使用以下方法訪問各個值:

$row['index']->name // e.g. $row['2']->email

對於單行結果,請使用loadObject() ,該對象從表中的單個記錄返回一個PHP對象。 這與您的代碼匹配,因為您可以使用以下方法訪問各個值:

$result->index // e.g. $result->email

最終更新查詢未執行,因為您缺少execute()

$query = "update ".$dbprefix."users set WeeklyAD=ADDDATE(WeeklyAD, interval 7 day) where id='".$user->id."'";
$database->setQuery($query);
$result = $database->execute();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM