WordPress中的数据库错误

I am using WordPress to create a website. I am getting the following error on my pages only and no shortcodes are working due to this error. This error ONLY occurs on PAGES; they are working fine on POSTS. How can I fix this error?

WordPress database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1]

SELECT wp_users.ID, wp_users.user_nicename FROM wp_users INNER JOIN wp_usermeta ON wp_users.ID = wp_usermeta.user_id WHERE wp_usermeta.meta_key = 'wp_capabilities' 
        AND wp_usermeta.meta_value LIKE '%administrator%' 
        OR wp_usermeta.meta_key = 'wp_capabilities' 
        AND wp_usermeta.meta_value LIKE '%subscriber%'
        OR wp_usermeta.meta_key = 'wp_capabilities' 
        AND wp_usermeta.meta_value LIKE '%author%' 
        OR wp_usermeta.meta_key = 'wp_capabilities' 
        AND wp_usermeta.meta_value LIKE '%editor%' 
        OR wp_usermeta.meta_key = 'wp_capabilities' 
        AND wp_usermeta.meta_value LIKE '%contributor%'
        ORDER BY wp_users.user_nicename LIMIT 0,

Use this query

SELECT wp_users.ID, wp_users.user_nicename FROM wp_users INNER JOIN wp_usermeta ON wp_users.ID = wp_usermeta.user_id WHERE wp_usermeta.meta_key = 'wp_capabilities' AND wp_usermeta.meta_value LIKE '%administrator%' OR wp_usermeta.meta_key = 'wp_capabilities' AND wp_usermeta.meta_value LIKE '%subscriber%' OR wp_usermeta.meta_key = 'wp_capabilities' AND wp_usermeta.meta_value LIKE '%author%' OR wp_usermeta.meta_key = 'wp_capabilities' AND wp_usermeta.meta_value LIKE '%editor%' OR wp_usermeta.meta_key = 'wp_capabilities' AND wp_usermeta.meta_value LIKE '%contributor%' ORDER BY wp_users.user_nicename LIMIT 0

you had just remove , from last of LIMIT 0.

if you have to display between limit e.g. LIMIT 0,50 then you need to use , otherwise you need to remove , from last.

Please check this updated query in your database.

SELECT wp_users.ID, wp_users.user_nicename FROM wp_users INNER JOIN wp_usermeta ON wp_users.ID = wp_usermeta.user_id WHERE wp_usermeta.meta_key = 'wp_capabilities' 
        AND wp_usermeta.meta_value LIKE '%administrator%' 
        OR wp_usermeta.meta_key = 'wp_capabilities' 
        AND wp_usermeta.meta_value LIKE '%subscriber%'
        OR wp_usermeta.meta_key = 'wp_capabilities' 
        AND wp_usermeta.meta_value LIKE '%author%' 
        OR wp_usermeta.meta_key = 'wp_capabilities' 
        AND wp_usermeta.meta_value LIKE '%editor%' 
        OR wp_usermeta.meta_key = 'wp_capabilities' 
        AND wp_usermeta.meta_value LIKE '%contributor%'
        ORDER BY wp_users.user_nicename LIMIT 0

imo, the inner join is preferential in this case.

regardless, here is a query that corrects many of the apparent problems in your query.

SELECT
   `wp_users.ID`,
   `wp_users.user_nicename`
FROM
    `wp_users`,
    `wp_usermeta`
WHERE
    `wp_users.ID`='YOUR_ID_VARIABLE',
    AND `wp_usermeta.user_id`=`wp_users.ID',
    AND `wp_usermeta.meta_key`='wp_capabilities'
    AND `wp_usermeta.meta_value` REGEXP '^administrator|subscriber|author|editor|contributor$'
ORDER BY
    `wp_users.user_nicename`

explanation of some problems from what i'm guessign you are trying to do:

  • LIMIT 0, basically means "start at row 0 and take 0 rows". if you used LIMIT 0,10 you would get results up to 10 rows -- "start at row 0 and take 10 rows". LIMIT 3 is shorthand for LIMIT 0,3 but i don't see why you need to define a LIMIT at all

  • you use AND then OR many times but did not encapsulate them in () to make it clear to the query how to compare. arbitrary example:

    WHERE column='this' AND (other_column='that' OR other_column='the other') AND (that_column='something else' OR this_column='something else')

  • and your using LIKE comparisons with wildcards % but i think you really want to match the default wordpress roles specifically -- not just whre it is contained in the data as your LIKE '%%' suggests.

you could use = comparisons if you don't feel comfortable with regular expressions:

SELECT
   `wp_users.ID`,
   `wp_users.user_nicename`
FROM
    `wp_users`,
    `wp_usermeta`
WHERE
    `wp_users.ID`='YOUR_ID_VARIABLE',
    AND `wp_usermeta.user_id`=`wp_users.ID',
    AND `wp_usermeta.meta_key`='wp_capabilities'
    AND (
        `wp_usermeta.meta_value` = 'administrator'
        OR `wp_usermeta.meta_value` = 'editor'
        OR `wp_usermeta.meta_value` = 'author'
        OR `wp_usermeta.meta_value` = 'contributor'
        OR `wp_usermeta.meta_value` = 'subscriber'
    )
ORDER BY
    `wp_users.user_nicename`