MySQL error 1064

Gesperrt
cabrio206
Beiträge: 6
Registriert: Do 3. Jun 2010, 11:12
Wohnort: Portimão
Kontaktdaten:

MySQL error 1064

Beitrag von cabrio206 » Do 3. Jun 2010, 19:42

Hallo Forum,

ich habe das Problem, das der Aufbau der Seite http://www.algarve-4you.de sehr langsam erfolgt. Der Aufruf ist aber nur langsam, wenn nur die URL eingegeben wird, gibt man einen Link ein in Form von http://www.algarve-4you.de/cms/front_co ... p?idcat=11 geht es schnell. Wo kann ich hier suchen? Der Provider meinte, beim Aufruf werden ca. 3GB Traffic erzeugt. Wie kann man nachvollziehen, was beim Seitenaufruf alles geladen wird?

Folgende Änderungen wurden gemacht: Ich habe 3 neue Templates angelegt und 3 neue Kategorien, denen diese Templates zugeordnet sind. Alle neuen Artikel sollen auf diesen Templates basieren. Es wurden ca. 20 neue Artikel angelegt.

Beim Aufruf der Webseite bekomme ich folgende Einträge im errorlog: (Beispiel)

[03-Jun-2010 18:15:01] /cms/front_content.php?idcat=42 next_record called with no query pending in Module ID 48.
[03-Jun-2010 18:15:01] /cms/front_content.php?idcat=42 MySQL error 1064: 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 'AND CAT.idcat = CATLANG.idcat
AND C
SELECT
CAT.idcat AS idcat,
name
FROM
con_cat AS CAT,
con_cat_lang AS CATLANG

WHERE CAT.idcat =
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '1'
AND CATLANG.visible = '1'
[03-Jun-2010 18:15:01] /cms/front_content.php?idcat=42 next_record called with no query pending in Module ID 48.



[03-Jun-2010 18:17:21] /cms/front_content.php?idart=137 next_record called with no query pending in Module ID 48.
[03-Jun-2010 18:17:21] /cms/front_content.php?idart=137 MySQL error 1064: 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 'AND CAT.idcat = CATLANG.idcat
AND C
SELECT
CAT.idcat AS idcat,
name
FROM
con_cat AS CAT,
con_cat_lang AS CATLANG

WHERE CAT.idcat =
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '1'
AND CATLANG.visible = '1'
[03-Jun-2010 18:17:21] /cms/front_content.php?idart=137 next_record called with no query pending in Module ID 48.


Wobei idcat=42 und idart=137 Kategorien und Artikel sind, die schon vor den Änderungen existiert haben. Der MySQL-Fehler tritt bei jeder Kategorie auf, die ich auf der Seite anklicke. :(
Kann mir jemand einen Tipp geben, an welcher Ecke ich anfangen kann zu suchen? Liegt es daran, wie Artikel und Kategorien erstellt wurden?

Grüsse,
cabrio206

Oldperl
Beiträge: 4251
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: MySQL error 1064

Beitrag von Oldperl » Fr 4. Jun 2010, 08:53

Hallo cabrio206,

ein paar Tips
  • Fehlermeldung im errorlog '/cms/front_content.php?idart=329' verfolgen und beseitigen.
  • Hat sich was am Server getan? Evtl. hilft ein Upgrade auf V. 4.8.12. Vorher schaun ob der Server die Voruaussetzungen schafft und besser lokal ausprobieren.
  • Wenn die Seite vorher funktioniert hat darauf prüfen was sich verändert hat. Auch einen Virus/Hack in Betracht ziehen
Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

cabrio206
Beiträge: 6
Registriert: Do 3. Jun 2010, 11:12
Wohnort: Portimão
Kontaktdaten:

Re: MySQL error 1064

Beitrag von cabrio206 » Mo 7. Jun 2010, 17:30

Hallo Forum,

das System wurde auf die Version 4.26 upgedatet, im Errorlog taucht folgender Fehler auf:

[07-Jun-2010 16:22:46] /neu/contenido/external/backendedit/front_content.php?changeview=edit&client=1&lang=1&action=con_editart&idartlang=500&idart=500&idcat=502&tmpchangelang=&contenido=9b1b064eaa5be1aebfd9a15c4da4b455 next_record called with no query pending in Module ID 48.
[07-Jun-2010 16:23:14] /neu/cms/front_content.php MySQL error 1064: 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 'AND CAT.idcat = CATLANG.idcat
AND C
SELECT
CAT.idcat AS idcat,
name
FROM
con_cat AS CAT,
con_cat_lang AS CATLANG

WHERE CAT.idcat =
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '1'
AND CATLANG.visible = '1'

So wie es aussieht, wurde der Fehler noch von der vorherigen Version übernommen. Mit welchen Hilfsmitteln kann die Fehlerursache eingegrenzt werden? Das Problem ist, das die Seite mittlerweile recht umfangreich geworden ist und nach einer Zeit der Seitenaufruf sehr langsam wird. Es ist wohl so, dass sehr viele Datenbankabfragen stattfinden und sich dadurch das ganze aufschaukelt und ausgebremst wird.

Der Fehler tritt auf, wenn man irgendeinen Artikel zum Bearbeiten anklickt.

Grüsse,
cabrio206

thepoet
Beiträge: 55
Registriert: Mo 7. Jul 2003, 11:39
Wohnort: Vilsbiburg
Kontaktdaten:

Re: MySQL error 1064

Beitrag von thepoet » Mo 7. Jun 2010, 18:05

Wie es aussieht hat hier irgendein Modul ein Problem damit, dass $idcat leer ist. Ob die Variable von einem vorhergehenden Modul geleert wird oder im Modul selbst was im Argen liegt, lässt sich schwer sagen. Ich würde mir als erstes das Modul 48 (welches das ist lässt sich einfach mit "SELECT name FROM con_mod WHERE idmod = '48'" rausfinden) und das im Template vorausgehende Modul ansehen und den Code abwechselnd auskommentieren, bis der Übeltäter eingekreist ist, wenn das nicht Hilft dann auch in der Template-Reihenfolge nach Oben durchhangeln.

Was ein wenig Stutzig macht ist der im Quelltext immer wieder auftauchende Kommentar zum Zanox-Affiliate Script ohne den normalerweise begleitenden Javascript-Code, ggf. liegt hier der Hund begraben.

cabrio206
Beiträge: 6
Registriert: Do 3. Jun 2010, 11:12
Wohnort: Portimão
Kontaktdaten:

Re: MySQL error 1064

Beitrag von cabrio206 » Mo 7. Jun 2010, 18:18

Hallo,

habe gesehen, dass auf der Webseite nur 3 Module aktiv verwendet werden. Die Abfrage findet im Modul Hauptnavigation statt, dann scheint hier ja wohl das Problem zu liegen. Kann ich den Code hier posten, damit ihn sich jemand ansieht?




Danke.

thepoet
Beiträge: 55
Registriert: Mo 7. Jul 2003, 11:39
Wohnort: Vilsbiburg
Kontaktdaten:

Re: MySQL error 1064

Beitrag von thepoet » Di 8. Jun 2010, 12:12

Klar, ich schau gerne mal drüber.

cabrio206
Beiträge: 6
Registriert: Do 3. Jun 2010, 11:12
Wohnort: Portimão
Kontaktdaten:

Re: MySQL error 1064

Beitrag von cabrio206 » Mi 9. Jun 2010, 09:39

Hallo,

also das ist das Modul, das die Hauptnavigation erstellt. Die oben genannten MySQL Fehler tauchen immer auf, wenn ich auf der Seite irgendeinen Artikel anklicke, bzw. wenn im Backend ein Artikel bearbeitet wird.

Code: Alles auswählen


<?php 

/*********************************************** 
* OUTPUT 
************************************************/ 

include_once($cfg["path"]["contenido"].$cfg["path"]["includes"]."functions.con.php"); 

// **************************************************************************************************** 
// SECURITY-CHECKS 
// **************************************************************************************************** 

// SQL-Injection Überprüfungen und Work-Arounds 

// lokale Variabeln initialisieren um Injections zu unterbinden 
$db2       = ""; 
$catStart  = ""; 
$catPrev   = ""; 
$sTmpStr   = ""; 
$db2_sql   = ""; 
$catIds    = ""; 
$key       = ""; 
$val       = ""; 
$sql       = ""; 

// **************************************************************************************************** 

// erstelle eine zweite DB-Klasseninstanz, da wir hier 
// mit zwei Abfragen udn Resultsets arbeiten müssen 
$db2 = new DB_Contenido; 

/* 
$eckkla_auf   = '::&nbsp;'; 
$eckkla_zu    = ''; 
$eckkla_trenn = '<br>'; 

$strBEGIN = ''; 
$strEND   = ''; 
*/ 

// Hole aus der Artikeldefinition die Ausgewählte Einstellungen 
$catStart                   = "CMS_VALUE[3200]"; 
$catPrev                    = "CMS_VALUE[3201]"; 
$eckkla_auf                  = "CMS_VALUE[3202]"; 
$eckkla_zu                   = "CMS_VALUE[3203]"; 
$eckkla_trenn                = "CMS_VALUE[3204]"; 
$strBEGIN                   = "CMS_VALUE[3205]"; 
$strEND                     = "CMS_VALUE[3206]"; 
$cfg_chkchildid             = "CMS_VALUE[3207]"; 
$cfg_css_link               = "CMS_VALUE[3208]"; 
$cfg_css_linkhl             = "CMS_VALUE[3209]"; 
$cfg_addstrafternumitems_num    = "CMS_VALUE[3210]"; 
$cfg_addstrafternumitems_str    = "CMS_VALUE[3211]"; 


// * get catPrec Category and output CatName as [ BackTo ]  nav item 


if ($catStart != "" && $catStart != "--kein--" ) { 
  $sTmpStr = ""; 

        if ( $catPrev != "" && $catPrev != "--kein--" ) { 
        // Datenbankabfrage ( SQL QUERY ) aufbauen 
        $sql = "   SELECT 
                       CAT.idcat AS idcat, 
                       name 
                    FROM 
                       ".$cfg["tab"]["cat"]." AS CAT, 
                       ".$cfg["tab"]["cat_lang"]." AS CATLANG 
              
                     WHERE   CAT.idcat = ".$catPrev." 
                           AND CAT.idcat = CATLANG.idcat 
                          AND CATLANG.idlang = '$lang' 
                          AND CATLANG.visible = '1'"; 
                      
        // Datenbankabfrage durchführen 
        $db->query($sql); 


        // die einzelnen Recordsets der Datenbankabfrage durchgehen 
        while ( $db->next_record() ) { 

      // überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist 
           if ( strlen($sTmpStr) == 0 ) { 
               // ... Nein, dann die Formatierung für den ersten Eintrag verwenden 
               // und den Eintrag der Ausgabevariabel hinzufügen 
               $sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu; 
           } 
           else 
           { 
               // ... Ja, dann die Formatierung für die weiteren Einträge verwenden und 
               // den Eintrag der Ausgabevariabel hinzufügen 
               $sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;          
           }  // end if 

        } // end while 
        
        } // end $catPrev überprüfung 
    
                        
   $db2_sql = "   SELECT 
            * 
         FROM ". $cfg["tab"]["cat"] ." AS A 
       
         WHERE 
          
           A.parentid = ". $catStart . " 

                                                ORDER BY A.preid 

                                                 "; 

   // Abfrage ausführen 
   $db2->query($db2_sql); 

     // Ermittlung aller Kategorie IDs der ausgesuchten 
     // Navigationsebene und speicherug in einem Array 
   while ( $db2->next_record() ) { 
             // $catIds[] = $db2->f("idcat"); 
      $test_1[$db2->f("preid")] = $db2->f("idcat"); 
   } 
    
/* 
PREID => IDCAT  ( $test_1 ) 
Array ( 
   [0]    => 50 

   [26]    => 27 
   [27]    => 28 
   [28]    => 29 
   [29]    => 30 
   [30]    => 31 
   [31]    => 32 
   [32]    => 33 
   [33]    => 38 
   [34]    => 35 
   [35]    => 36 
   [36]    => 37 
   [38]    => 34 
   [50]    => 26 
) 
------------------------------------ 
*/ 

// --------------------------------------------- 
// sort ids 
$ar_anz = count($test_1); 
$lpre = 0; 
$test_3 = ""; 
$ires = ""; 

for ( $sli = 1 ; $sli <= $ar_anz ; $sli++ ) 
{ 
   $ires        = $test_1[$lpre];    
   $test_3[]    = $test_1[$lpre];    
   $lpre        = $ires; 
} 


// print_r($test_3); echo '<br><br>'; 
$catIds = $test_3; 
// --------------------------------------------- 

  // Überprüfung ob $catIds wirklich ein Array ist 
  if ( is_array($catIds) ) { 

    // die einzelnen IDs durchgegen 
    $cntAddStrAfterNItems = 1; 
    foreach($catIds as $key=>$val) { 

        
        // Datenbankabfrage ( SQL QUERY ) aufbauen 
        $sql =    "   SELECT 
                       CAT.idcat AS idcat, 
                       name 
                    FROM 
                       ".$cfg["tab"]["cat"]." AS CAT, 
                       ".$cfg["tab"]["cat_lang"]." AS CATLANG 
              
                     WHERE   CAT.idcat = ".$val." 
                           AND CAT.idcat = CATLANG.idcat 
                           AND CATLANG.idlang = '$lang' 
                           AND CATLANG.visible = '1'"; 

        // Datenbankabfrage durchführen 
        $db->query($sql); 


        // die einzelnen Recordsets der Datenbankabfrage durchgehen 
        
        while ( $db->next_record() ) { 
            
        
   if ( $cfg_chkchildid && sn_check_if_child ( $idcat, $catStart )) 
   { 
           // überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist 
              if ( strlen($sTmpStr) == 0 ) { 
                     // ... Nein, dann die Formatierung für den ersten Eintrag verwenden 
                     // und den Eintrag der Ausgabevariabel hinzufügen 
                     $sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_linkhl.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu; 
              } 
              else 
              { 
                     // ... Ja, dann die Formatierung für die weiteren Einträge verwenden und 
                     // den Eintrag der Ausgabevariabel hinzufügen 
                     $sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_linkhl.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;          
              }  // end if 
   } 
   else 
   { 
           // überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist 
              if ( strlen($sTmpStr) == 0 ) { 
                     // ... Nein, dann die Formatierung für den ersten Eintrag verwenden 
                     // und den Eintrag der Ausgabevariabel hinzufügen 
                     $sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu; 
              } 
              else 
              { 
                     // ... Ja, dann die Formatierung für die weiteren Einträge verwenden und 
                     // den Eintrag der Ausgabevariabel hinzufügen 
                     $sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;          
              }  // end if 
   } 
    


        } // end while 
        
    // Wenn N-Item ausgegeben wurden ... 
    if ( $cntAddStrAfterNItems == $cfg_addstrafternumitems_num ) 
    { 
            // Zeichenkette einfügen und Counter zurücksetzen 
           $sTmpStr = $sTmpStr . $cfg_addstrafternumitems_str; 
            $cntAddStrAfterNItems = 1; 
    } 
    else 
    { 
       // ansonsten Counter einfach um 1 erhöhen 
      $cntAddStrAfterNItems = $cntAddStrAfterNItems + 1; 
    } // end if 
    
    }  // end foreach 

    // END Zeichen $strEND anfügen 
    $sTmpStr = $sTmpStr . $strEND; 

    // Ausgabevariabel schreiben, da nun alle Einträge behandelt wurden. 
    echo $sTmpStr; 
  } // end if (is_array) 


} 


if ( $sn_navmod != "multiuse" ) { 
$sn_navmod = "multiuse"; 


function sn_check_if_child ( $l_idcat, $l_paridcat ) 
{ 
   $bResult = false; 
   $l_int   = $l_idcat; 

   while ( $l_int != 0 && $l_int != $l_paridcat ) 
   { 
      $l_int = get_parentid_from_idcat ( $l_int ); 

      if ( $l_int == $l_paridcat ) 
      { 
         $bResult = true; 
      } // end if 
   } // end while 
    
   return $bResult; 
} // check_if_child 

function get_parentid_from_idcat ( $l_idcat ) 
{ 
   $ldb = new DB_Contenido; 
   $lsql= "SELECT * 
      FROM    ".$cfg["tab"]["cat"]." AS CAT, 
                    ".$cfg["tab"]["cat_lang"]." AS CATLANG 
              
                WHERE   CAT.idcat = ".$l_idcat." 
                        AND CAT.idcat = CATLANG.idcat 
                        AND CATLANG.idlang = '$lang' 
                        AND CATLANG.visible = '1'"; 

   $ldb->query($lsql); 

   while ( $ldb->next_record() ) 
   { 
      $l_parid = $ldb->f("parentid"); 
   } 

   return $l_parid; 

} // end function get_parentid_from_idcat 

} // end MULTIUSE Funktions 
?>
Irgendwo ist der Wurm drin....

Grüsse,
cabrio206

Gesperrt