0

我使用 joomla 2.5.27 和 community builder 2.0.2。我为社区构建器使用 cb rank 插件我收到错误

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“AND confirmed= 1 AND approved= 1”附近使用正确的语法 SQL=SELECT COUNT( id) FROM r2yze_comprofiler WHERE cb_points> AND confirmed = 1 AND 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
?>
4

1 回答 1

0

尝试这个。

// 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;
于 2014-11-07T07:06:21.553 回答