2016-12-20 11 views
0

では動作しない私が機能し、私の機能を持っているだけで、私はこれを理解していない良い作品:変数は、where句のPHPのjoomlaの

<?php 

// $category output is 23 when I echo $category; and there is no records 
->where('d.category_id = ' . (int) $category) 

// also this method not work 
->where('d.category_id = ' . $category) 

// but this method works 
->where('d.category_id = 23') 

?> 

を、これは完全なコードです:

$category = $params->get('title'); 

//echo $category; 

public static function getSuggested($category) { 


$db = JFactory::getDBO(); 
$query = $db->getQuery(true); 

//$now  = $jdate->toSql(); 
//$nullDate = $db->quote($db->getNullDate()); 

$query->select('d.*'); 
$query->from('#__deals_deals AS d'); 

$query->select('c.title AS category_title'); 
$query->join('LEFT', '#__deals_categories AS c ON c.id = d.category_id') 
->where('(d.is_market = 0 AND d.state = 1)','AND') 
->where('d.category_id = 23') 
->order('id DESC'); 

//$query->where('(d.publish_up = ' . $nullDate . ' OR d.publish_up <= ' . $query->quote($now) . ')'); 
//$query->where('(d.publish_down = ' . $nullDate . ' OR d.publish_down >= ' . $query->quote($now) . ')'); 
$db->setQuery($query,0,10); 

$results = $db->loadObjectList(); 

return $results; 

} 

この関数は唯一の良い作品カテゴリデータを取得する必要があります。 これはjoomlaモジュールです。この関数はdefault.phpファイルのhelper.phpファイルにあります。この関数からいくつかのデータを取得しています。

私が見つかりました。解決策:

$category = (int) $params->get('fieldvalue'); 

その後、mod_suggested_deals.phpに追加:

$results = modsuggested_dealsHelper::getSuggested($category); 
+3

例文に使用しているコード全体を表示できますか?例: '$ query-> where( '');' – Kitson88

+0

**警告**: '$ db-> quote'を使って値を正しくエスケープしてください。 'int'へのキャストは汎用的なエスケープ方法ではありません。 2番目のクエリには膨大な[SQLインジェクションホール](http://bobby-tables.com/)があります。 – tadman

+0

はいコードを編集します。 – Gocha

答えて

0

あなたは関数の外の変数値を定義しているされているの間違いその内部で変数を呼び出すことができます。あなたのクラスは抽象クラスでない場合は、$this->categoryを使用することができますか、あなたのクラスは抽象クラスであるならば、この

public static function getSuggested() { 

    $module = JModuleHelper::getModule('mod_yourmodulename'); 
    $catid = new JRegistry($module->params); 
    $category = (int) $catid['title']; 


$db = JFactory::getDBO(); 
$query = $db->getQuery(true); 

//$now  = $jdate->toSql(); 
//$nullDate = $db->quote($db->getNullDate()); 

$query->select('d.*'); 
$query->from('#__deals_deals AS d'); 

$query->select('c.title AS category_title'); 
$query->join('LEFT', '#__deals_categories AS c ON c.id = d.category_id') 
->where('(d.is_market = 0 AND d.state = 1)','AND') 
->where('d.category_id = '.$category) 
->order('id DESC'); 

//$query->where('(d.publish_up = ' . $nullDate . ' OR d.publish_up <= ' . $query->quote($now) . ')'); 
//$query->where('(d.publish_down = ' . $nullDate . ' OR d.publish_down >= ' . $query->quote($now) . ')'); 
$db->setQuery($query,0,10); 

$results = $db->loadObjectList(); 

return $results; 

} 
+0

私はvar_dumpを追加するときにnullを返します。私はundestandをなぜ、私のフィールド名はtitleで、私はクラスの外にparametrを取得しません。内部クラス私はタイトルのパラメータを取得していません – Gocha

+0

@Gocha私は答えplzのチェックを編集しました。 –

+0

私がこの$ category = $ params-> get( 'title')を置くと、内部関数私はこのエラーが表示されます:メンバー関数に呼び出すget()nullなどで。 – Gocha

0

のような関数の内部で$カテゴリ変数を使用して、私はこの質問のためのsolutonが見つかりました:

$category = $params->get('title'); 
:私の機能私はmod_suggested_deals.phpでのparam $カテゴリ

public static function getSuggested($category) {...} 

を追加私はコードを追加します。

はコードです(既にここにありました)。

$results = modsuggested_dealsHelper::getSuggested($category);