You have an error in your SQL syntax; check the manual that corresponds to your MySQL

  • Hi,

    bei meinem Wordpress Blog gibt es ein Problem bei einem Datenbank Query. Bei Seitenaufruf wird folgende Fehlermeldung ins Error-log geschrieben:

    Zitat

    WordPress-Datenbank-Fehler 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 für Abfrage SELECT wp_mydb_posts.ID FROM wp_mydb_posts WHERE wp_mydb_posts.post_status = 'publish' AND wp_mydb_posts.post_type = 'post') von require, require_once, include, get_footer, locate_template, load_template, require_once, include, dynamic_sidebar, call_user_func_array, widget_ara_randomposts, ara_random_posts, ara_get_random_posts

    Seitenaufruf habe ich kontrolliert. Exakt pro einen Seitenaufruf gibt es eine Fehlermeldung. Vermutung war, dass dieser Fehler von der wp-includes/query.php kommt.
    Allerdings kann ich den Fehler nicht nachvollziehen, da ich es irgendwie nicht schaffe mir den konkreten SQL Befehl ausgeben zu lassen (um mir diesen anzusehen)

    SQL-Server Version ist 5.1.56
    manual -> http://dev.mysql.com/doc/refman/5.1/en/news-5-1-56.html

    Wie kann ich mir den query am besten ausgeben lassen um den Syntax zu kontrollieren? Vielleicht weiß mir da auch schon jemand direkt zu helfen.

    Auszuschließen ist ein Fehler in der query.php - die ist up to date und nicht verändert.

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren


  • Vermutung war, dass dieser Fehler von der wp-includes/query.php kommt.

    Warum?

    es wird eigentlich nur nach ID gesucht - dies kann alles möglichsein sein. auch ein fehlerhafte Funktion in einem Template


    SELECT wp_mydb_posts.ID FROM wp_mydb_posts WHERE wp_mydb_posts.post_status = 'publish' AND wp_mydb_posts.post_type = 'post')

    In deinem PHP Script sollte

    PHP
    AND post_type = 'post')";

    dann stehen.

    Mit einem guten Editor könntest du die Zeilen recht schnell finden. (sucha nach AND post_type = 'post')"; in allen *.php Dateien.

    Die Klammer ) ist hier falsch.

    evtl. hilft dir auch der Debug-Modus von WP weiter.

    PHP
    define('WP_DEBUG', true);define('WP_DEBUG_DISPLAY', true);define('WP_DEBUG_LOG', true);define('SCRIPT_DEBUG', true);

    einfach in die config schreiben...

    cu

    ralf

    Mit offenen Augen träumen

  • Hallo Ralf,

    also erst mal vielen Dank für deine Unterstützung. Leider hat mich das bis jetzt nicht weiter gebracht.
    Die Suche nach

    Code
    [COLOR=#000000][COLOR=#007700]AND [/COLOR][COLOR=#0000BB]post_type [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#DD0000]'post'[/COLOR][COLOR=#007700])[/COLOR][COLOR=#DD0000]";  [/COLOR][/COLOR]


    blieb ohne Ergebnis.

    Ich habe dann mal )"; weggenommen und bin zu 6 Treffern gekommen:

    Aus der Datei: wp-includes/general-template.php
    Line 1137

    Code
    $previous = $wpdb->get_row("SELECT MONTH(post_date) AS month, YEAR(post_date) AS year
            FROM $wpdb->posts
            WHERE post_date < '$thisyear-$thismonth-01'
            AND post_type = 'post' AND post_status = 'publish'
                ORDER BY post_date DESC
                LIMIT 1");

    Line 1143

    Code
    $next = $wpdb->get_row("SELECT MONTH(post_date) AS month, YEAR(post_date) AS year
            FROM $wpdb->posts
            WHERE post_date > '$thisyear-$thismonth-{$last_day} 23:59:59'
            AND post_type = 'post' AND post_status = 'publish'
                ORDER BY post_date ASC
                LIMIT 1");

    Line 1197

    Code
    $dayswithposts = $wpdb->get_results("SELECT DISTINCT DAYOFMONTH(post_date)
            FROM $wpdb->posts WHERE post_date >= '{$thisyear}-{$thismonth}-01 00:00:00'
            AND post_type = 'post' AND post_status = 'publish'
            AND post_date <= '{$thisyear}-{$thismonth}-{$last_day} 23:59:59'", ARRAY_N);

    Line 1217

    Code
    $ak_post_titles = $wpdb->get_results("SELECT ID, post_title, DAYOFMONTH(post_date) as dom "
            ."FROM $wpdb->posts "
            ."WHERE post_date >= '{$thisyear}-{$thismonth}-01 00:00:00' "
            ."AND post_date <= '{$thisyear}-{$thismonth}-{$last_day} 23:59:59' "
            ."AND post_type = 'post' AND post_status = 'publish'"
        );

    Sowie aus Datei: wp-includes/ms-functions.php

    Line 1458

    Code
    $recent_post = $wpdb->get_row( $wpdb->prepare("SELECT ID, post_date_gmt FROM {$wpdb->base_prefix}{$blog->userblog_id}_posts WHERE post_author = %d AND post_type = 'post' AND post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1", $user_id ), ARRAY_A);

    Line 1616

    Code
    update_option( 'post_count', (int) $wpdb->get_var( "SELECT COUNT(ID) FROM {$wpdb->posts} WHERE post_status = 'publish' and post_type = 'post'" ) );

    Allerdings kann ich hier nirgends eine falsche Klammersetzung lokalisieren.

  • Die gezeigten undgefundenen SQL-Code Zeilen sind richtig und stimmen auch gar nicht mit der Fehlermeldung überein.

    Nach der Fehlermeldung wird nur nach der ID gesucht

    SELECT ID FROM
    Ich würde erst alle mir

    "
    [COLOR=#000000][COLOR=#0000BB]post_type [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#DD0000]'post'[/COLOR][/COLOR]
    "

    suche und aus dem Ergebnis die mit
    SELECT ID FROM
    filtern.

    Evtl. verwendest du in den Templates eine fehlerhalfte "Query_posts"

    http://doku.wordpress-deutschland.org/Template_Tags/query_posts

    auch diese würde ich jetzt einmal untersuchen ;)

    Mit offenen Augen träumen

  • Problem erkannt, problem gebannt

    Ha,...

    Problem gelöst - zumindest so zur hälfte. Ein Plugin hat die Fehlermeldung erzeugt. Das war dafür zuständig zufällige Artikel aus der Datenbank aufzulisten.

    Habs entfernt, jetzt ist die Fehlermeldung weg.
    Danke für den Tipp mit dem query_post - das hat mich drauf gebracht.

    Beste Grüße

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!