Я получаю ошибку синтаксиса SQL
Я использую Joomla 2.5.27 и Community Builder 2.0.2. Я использую плагин cb rank для сообщества строитель Я получаю сообщение об ошибке
У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с AND
confirmed
= 1 Иapproved
= 1'в строке 1 SQL = SELECT COUNT (id
) ОТ r2yze_comprofiler ГДЕcb_points
> Иconfirmed
= 1 Иapproved
= 1
Как исправить эту ошибку
Код PHP
// Calculate rank
if ( $ordertype == "low" ) {
$_CB_database->setQuery( "SELECT COUNT(`id`) FROM #__comprofiler WHERE `$fieldname` < $userfield AND `confirmed` = 1 AND `approved` = 1" );
}
else {
$_CB_database->setQuery( "SELECT COUNT(`id`) FROM #__comprofiler WHERE `$fieldname` > $userfield AND `confirmed` = 1 AND `approved` = 1" );
}
$value = $_CB_database->loadResult() + 1;
полный код PHP
<?php
/**
* Joomla Community Builder Rank Field Type Plugin: plug_cbrankfield
* @version $Id$
* @package plug_cbrankfield
* @subpackage cb.rankfield.php
* @author Joe Palmer
* @copyright (C) 2009 www.softforge.co.uk
* @license Limited http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU/GPL version 2
* @final 1.0
*/
/** ensure this file is being included by a parent file */
if ( ! ( defined( '_VALID_CB' ) || defined( '_JEXEC' ) || defined( '_VALID_MOS' ) ) ) { die( 'Direct Access to this location is not allowed.' ); }
global $_PLUGINS;
$_PLUGINS->loadPluginGroup( 'user', array( (int) 1 ) );
$_PLUGINS->registerUserFieldTypes( array( 'rankfield' => 'CBfield_rank' ) );
$_PLUGINS->registerUserFieldParams();
class CBfield_rank extends CBfield_counter {
/**
* Returns a field in specified format
*
* @param moscomprofilerFields $field
* @param moscomprofilerUser $user
* @param string $output 'html', 'xml', 'json', 'php', 'csvheader', 'csv', 'rss', 'fieldslist', 'htmledit'
* @param string $reason 'profile' for user profile view, 'edit' for profile edit, 'register' for registration, 'list' for user-lists
* @param int $list_compare_types IF reason == 'search' : 0 : simple 'is' search, 1 : advanced search with modes, 2 : simple 'any' search
* @return mixed
*/
function getField( &$field, &$user, $output, $reason, $list_compare_types ) {
global $_CB_framework, $ueConfig, $_CB_database;
$oReturn = null;
$fieldname = $field->params->get( 'fieldOrderName', 'hits' );
$ordertype = $field->params->get( 'fieldOrderType', 'high' );
$userfield = $user->$fieldname;
// Calculate rank
if ( $ordertype == "low" ) {
$_CB_database->setQuery( "SELECT COUNT(`id`) FROM #__comprofiler WHERE `$fieldname` < $userfield AND `confirmed` = 1 AND `approved` = 1" );
}
else {
$_CB_database->setQuery( "SELECT COUNT(`id`) FROM #__comprofiler WHERE `$fieldname` > $userfield AND `confirmed` = 1 AND `approved` = 1" );
}
$value = $_CB_database->loadResult() + 1;
switch ( $output ) {
case 'html':
case 'rss':
$oReturn = $value;
break;
case 'htmledit':
// $oReturn = parent::getField( $field, $user, $output, $reason, $list_compare_types );
$oReturn = null; //TBD for now no searches...not optimal in SQL anyway.
break;
case 'json':
case 'php':
case 'xml':
case 'csvheader':
case 'fieldslist':
case 'csv':
default:
$oReturn = $this->_formatFieldOutputIntBoolFloat( $field->name, $value, $output );
break;
}
return $oReturn;
}
}//end of rank field
?>
1 ответ
Решение
Попробуй это.
// Calculate rank
if ( $ordertype == "low" ) {
$_CB_database->setQuery( "SELECT COUNT(`id`) FROM #__comprofiler WHERE ".$fieldname." < '".$userfield."' AND `confirmed` = 1 AND `approved` = 1" );
}
else {
$_CB_database->setQuery( "SELECT COUNT(`id`) FROM #__comprofiler WHERE ".$fieldname." > '".$userfield."' AND `confirmed` = 1 AND `approved` = 1" );
}
$value = $_CB_database->loadResult() + 1;