Fehler mit SQL-Abfragen

Der Fehler nochmal: TblClass.SqlQuery-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 'Die Tremsdorfer Blasmusikanten"" , date = "2007101534" WHERE ne Error-Code: 1064

Die Class dafür:
PHP:
   function Update ($mix_setCol, $mix_setVal, $mix_whereCol = array(), $mix_whereVal = array(), $int_max = -1) { 
      // Update eines oder mehrerer Datensätze 
      // Erwartet: - mix_setCol: Array of String oder String, welche Spalten 
      //             aktualisiert werden sollen 
      //           - $mix_setVal: Array of String oder Mix mit den neuen Werten 
      //           - $mix_val: Array oder Mix als Werte für die WHERE- 
      //             Bedingung, Standard ist leer 
      //           - $mix_order: Array of String mit Spalten für ORDER- 
      //             Bedingung (optional) 
      //           - $int_max: Anzanhl der Werte, die maximal upgedatet werden 
      //             sollen 
      // Liefert:  TRUE: Datensätze wurden upgedatet 
      //           FALSE: sonst 

      // SET-Klausel zusammensetzen 
      $str_set = $this->_BuildWOS($mix_setCol, $mix_setVal, "=", ", ", "SET"); 
      // Fehlerbehandlung 
      if ($str_set == false) { 
         $this->PushError ("TblClass.Update-Set Bedingung konnte nicht erstellt werden."); 
         return false; 
      } 

      // WHERE-Klausel zusammensetzen 
      $str_where = $this->_BuildWOS ($mix_whereCol, $mix_whereVal); 
      // Fehlerbehandlung 
      if ($str_where === false) { 
         $this->PushError ("TblClass.Update-Where Bedingung konnte nicht erstellt werden."); 
         return false; 
      } 

      // LIMIT-Klausel zusammensetzen 
      $str_limit = $this->_BuildLimit(0, $int_max); 

      // SQL-Statement erzeugen 
      $str_query = 'UPDATE '.$this->str_tbl.''.$str_set.$str_where.$str_limit.';'; 
      // SQL-Anfrage an die DB senden 
      $mix_query = $this->SqlQuery ($str_query, false, false); 
      // Fehlerbehandlung 
      if ($mix_query === false) { 
         $this->PushError ("TblClass.Update-Query wurde nicht erfolgreich ausgeführt."); 
         return false; 
      } 

      return true; 
   } // Update ///////////////////////////////////////////////////////////////// 

   function UpdateAssoc ( $arr_set, $mix_where, $int_max = -1, $str_tblname = "" ) { 
      if($str_tblname){ 
         $str_oldtbl = $this->str_tbl; 
         $this->SetTable($str_tblname); 
      } 

      $arr_cols = $this->SqlQuery ( "SHOW COLUMNS FROM ".$this->str_tbl.";" ); 
      $arr_aset = array(); 
      foreach($arr_cols as $arr_col){ 
         if(isset($arr_set[$arr_col["Field"]]) && ($arr_col["Key"] != "PRI")){ 
            $arr_aset[$arr_col["Field"]] = $arr_set[$arr_col["Field"]]; 
         } 
      } 
      if(is_array($mix_where)){ 
         $arr_awhere = array(); 
         foreach($arr_cols as $arr_col){ 
            if(isset($mix_where[$arr_col["Field"]])){ 
               $arr_awhere[$arr_col["Field"]] = $mix_where[$arr_col["Field"]]; 
            } 
         } 
      }else{ 
         foreach($arr_cols as $arr_col){ 
            if($arr_col["Key"] == "PRI"){ 
               $arr_awhere[$arr_col["Field"]] = $mix_where; 
            } 
         } 
      } 

      $this->Update(array_keys($arr_aset), array_values($arr_aset), array_keys($arr_awhere), array_values($arr_awhere), $int_max); 

      if($str_oldtbl){ 
         $this->SetTable($str_oldtbl); 
      } 

      return true; 
   }

und hier der Eintrag zum Update in dem Newsadmin:

PHP:
   function UpdateNews ( $news_id, $arr_news ) { 
      $this->UpdateAssoc ( $arr_news, $news_id, 1, tbl_news ); 

      return true; 
   } 

   /** 
   * @desc L�scht ein bestehendes Element 
   * @param $news_id INT identifiziert den zu l�schenden Datensatz 
   * @return BOOL 
   */

Ich verstehe hier einfach nicht, wo der Fehler ist und vor allem warum?
 
Ich habe mir die ganze Soße jetzt nochmal zu gemüte geführt und bin zu dem Schluß gekommen, das irgendetwas in der Syntax für die SQL - Querys nicht stimmt. nur weiß ich eben nicht, wo ich das behebe. Kann mir da einer helfen?
 
Hallo,
meiner Meinung nach sind es 2 Fehler
1.PHP-seitig sollten die Tremsdorfer etwa so aussehen :
\' Die Tremsdorfer Blasmusikanten \'
Also Stringfeldwert Verpacken '\'.Feldwert.'\' notfalls mit UTF encode codieren
2. Das Datum sollte einfache Anführungsstriche enthalten nicht "2007101534.. "

Dann sollte es gehen
Viele Grüße
 
Gut, das hatte icha uch schon in Erwägung gezogen nur leider ist es mir bei dem vorhandenen Quellcode nicht möglich diese Informationen genau zu lokalisieren.
 
Hallo,
ist zwar nicht mein Code aber Du hast den Quellcode von _BuildOWS dort wird string zusammengesetzt.
Dort mußt Du anfangen.
Viele Grüße
 
Hallo die Antwort findet sich in Tbl.Class:
PHP:
 function _BuildWOS ($mix_col, $mix_val, $str_op = "=", $str_link = "AND", $str_pref = "WHERE") { 
      // Erzeugt für eine SQL-Abfrage eine WHERE oder eine SET-Klausel 
      // Erwartet: - $mix_col: Array of String oder String zur Auswahl der 
      //             Spaltenbezeichner der DB 
      //           - $mix_val: Array of String oder String zur Angabe der 
      //             Werte 
      //           - $str_op: Verknüpfungsoperator, "=" oder "like", 
      //             standardmässig "=" 
      //           - $str_link: Verknüpfungsoperator einzelner Klauseln 
      //             "AND" oder "OR", standardmässig "AND" 
      //           - $str_pref: Statemen-Typ, "WHERE" oder "SET", Standard 
      //             ist "WHERE" 
      // Liefert: STRING: WHERE oder SET-Klausel 
      //          FALSE: sonst ....
echo" Funktion geht noch weiter!";

Also hier musst Du ran!
Sorry wegen der späten Antwort!
 
Zurück