2016-06-19 33 views
0

データベースに接続して結果を取得するアプリケーションをテストしています。 PHPとJoomlaフレームワークを使用しています。 事は、私がMySQLクエリによって返される結果がありません

$query = "SELECT * FROM #__coupon_member_details"; 
$this->_db->setQuery($query);   
$result = $this->_db->query(); 
$number = mysql_num_rows($result); 
if($number == 0){ 
     JFactory::getApplication()->enqueueMessage("no data returned by db"); 
}else{ 
     JFactory::getApplication()->enqueueMessage($number); 
} 

としてクエリを置く場合は、上記のコードは、テーブルにデータ(200 +行)が多く含まれているという事実を除いて、「データがデシベルで返さない」というメッセージを与えることです。

無効なテーブル名を#__coupon_member_details123とすると、「テーブルが存在しません」というエラーが表示されます。

何が間違っているのか理解できません。

+0

廃止予定の 'mysql_ *'を使用してください。 mysqli_ *や 'PDO'を使います。また、 'var_dump($ number);'は何を出力しますか? –

+0

コードは2年前に書かれていたので、今のところ新しい拡張に変更することはできません。 'var_dump($ number); '何も印刷しません。 –

答えて

1

Joomlaでは、このような正しいJoomla APIを使用する必要があります。上記のクエリは$arrResultでデータを返します

$query = "SELECT * FROM #__coupon_member_details"; 
$this->_db->setQuery($query); 
$arrResult = $this->_db->loadAssocList(); 
$intCountResults = count($arrResult); 

、および$intCountResultsで結果数:Joomlaの中mysql_num_rows同等はgetNumRows

$query = $this->_db->getQuery(true); 
$query = "SELECT * FROM #__coupon_member_details"; 
$this->_db->setQuery($query); 
$result = $this->_db->query(); 
$numRows = $this->_db->getNumRows(); 
if($numRows == 0){ 
     JFactory::getApplication()->enqueueMessage("no data returned by db"); 
}else{ 
     JFactory::getApplication()->enqueueMessage($number); 
} 
+0

'$ row = mysql_fetch_array($ result);'のような他のクエリでは、Joomla固有のクエリを使用する必要がありますか? –

+0

@sanA $ this - > _ db-> loadAssocList();を使用できます。詳細については、このページで確認できます。https://docs.joomla.org/Accessing_the_database_using_JDatabase –

1

が、私はこのようにそれを行うだろうです。

あなただけの数が、その後、私はあなたに上記の変更をお勧めしたい場合:

$query = "SELECT COUNT(*) AS `totalcount` FROM #__coupon_member_details"; 
$this->_db->setQuery($query); 
$intCountResults = $this->_db->loadResult(); 

これは良いですし、スケーラブルです。さらにSELECT COUNT(*)idフィールドがある場合)の代わりにSELECT count(id)のような処理を行うこともできます。

関連する問題