SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 31.05.2010, 19:27:58
Leyyin Leyyin ist offline
Anfänger
 
Registriert seit: May 2010
Alter: 44
Beiträge: 67
SQL-Syntax-Fehler, MySQL Version

Hallo,

ich möchte zuerst danken an alle Autoren des Forums. Das hier ist wirklich eine tolle Seite.

Seit zwei Monaten beschäftige ich mich mit PHP und brauche sooooo sehr Hilfe.
Erst eben gerada habe ich mich registriert und hoffe, dass ich mit eurer Hilfe meine Böse Fehler endlich mal korrigieren kann.

Ich habe am meisten Probleme mit der SQL-Syntax (außer meine Deutsch-Fehlern, meine ich).
Das seltsame ist, dass z.B. eine SQL-Abfrage bei mir ein oder mal funktioniert und dann nicht mehr.
Oder in einem Skript geht es super aber in einem anderen bekomme ich ständig Fehlermeldungen, die wie folgt anfangen:

"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 ...."

Ich benutze XAMMP mit den folgenden komponent-Versionen:
Apache/ 2.2.14, PHP/ 5.3.1 und MySQL/5.1.41 , PHP Erweiterung: Mysqli

Ich glaube, solche Fehler passiert bei mir wegen diesen Hochkommata oder doppelte Anführungszeichen. Allein wegen diesem Problem fühle ich mich langsam frustriert.

Hier z.B. habe ich eine abfrage_aufbauen() Funktion, welche ich von einem sehr guten Buch (PHP von Kopf bis Fuß) anzuwenden versuche:

PHP-Code:
 public static function abfrage_aufbauen($sortierung){
        
//teilnehmer JOIN (teilnehmer_job JOIN institut)
        
$jointeil "ak_teilnehmer AS t\n" .
                        
"LEFT JOIN (\n" .
                                    
"ak_teilnehmer_job AS tj\n" .
                                    
"INNER JOIN ak_institut AS i ON tj.tj_institut = i.i_id\n" .
                                    
")\n" .
                        
"ON t.t_id = tj.tj_teilnehmer\n";

        
$list_sql "SELECT t_titel, t_vname, t_nname, t_beruf, i_name, t_email\n FROM" $jointeil;

        
/*Die Ergebnisse sortieren.
        * Diese switch_Anwiesung prüft den Wert von $sortierung und
        * hängt ans Ende der Abfrage die entsprechende ORDER BY-Klausel an.
        */
        
switch ($sortierung) {
            
//aufsteigend über Nachname
            
case 1:
              
$list_sql .= " ORDER BY t_nname";
              break;
            
//absteigend über Nachname
            
case 2:
              
$list_sql .= " ORDER BY t_nname DESC";
              break;
            
// aufsteigend über den Beruf
            
case 3:
              
$list_sql .= " ORDER BY t_beruf";
              break;
            
// absteigend über den Beruf
            
case 4:
              
$list_sql .= " ORDER BY t_beruf DESC";
              break;
            
// aufsteigend über das Institut
            
case 5:
              
$list_sql .= " ORDER BY i_name";
              break;
            
// absteigend über das Institut
            
case 6:
              
$list_sql .= " ORDER BY i_name DESC";
              break;
            default:
              
// Keine Sortierung vorgegeben, nicht sortieren.
        
}

        return 
$list_sql// damit der Code, der die Funktion aufgerufen hat, sie verwenden kann.
    

Und die Fehlermeldung sieht so aus:

"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 'AS t LEFT JOIN ( ak_teilnehmer_job AS tj INNER JOIN ak_institut AS i ON tj.tj_in' at line 2"

Ich wäre sehr dankbar, wenn mir jemand mein Fehler zeigen würde...
Mit Zitat antworten
  #2  
Alt 31.05.2010, 20:25:49
knight1 knight1 ist offline
Junior Member
 
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
knight1 eine Nachricht über MSN schicken knight1 eine Nachricht über Skype™ schicken
AW: SQL-Syntax-Fehler, MySQL Version

Mir erschließt sich der Sinn der Zeilenumbruchs-"Steuerzeichen" \n nicht die Du in das Statement mit reinschreibst.
Ansonsten sieht das Statement meiner Meinung nach, nach dem ersten "überfliegen", in Ordnung aus. Ich kann mich aber auch Irren.

Kai aka Knight1
__________________
Please visit: http://www.kaikordel.de
Mit Zitat antworten
  #3  
Alt 01.06.2010, 09:16:43
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
AW: SQL-Syntax-Fehler, MySQL Version

Zitat:
Zitat von Leyyin Beitrag anzeigen
Ich habe am meisten Probleme mit der SQL-Syntax (außer meine Deutsch-Fehlern, meine ich).
es gibt nicht auszusetzen .-

Zitat:
Zitat von Leyyin Beitrag anzeigen
Ich wäre sehr dankbar, wenn mir jemand mein Fehler zeigen würde...
wie zuvor angesprochen, kann ich - abgesehen von den steuerzeichen - keine syntaktischen fehler in deinem sql-statement erkennen. ehrlich gesagt wundert's mich, dass die anweisung überhaupt funtioniert:

Zitat:
Zitat von Leyyin Beitrag anzeigen
Das seltsame ist, dass z.B. eine SQL-Abfrage bei mir ein oder mal funktioniert und dann nicht mehr.
weitere anmerkungen:

1. warum konkatenierst du die einzelnen bestandteile des sql-statements? das ist unnötig und könnte bspw. so (besser) aussehen:

PHP-Code:
$jointeil =    

"
   ak_teilnehmer AS t
   LEFT JOIN  (
                       ak_teilnehmer_job AS tj
                       INNER JOIN ak_institut AS i ON tj.tj_institut = i.i_id
                    )
   ON t.t_id = tj.tj_teilnehmer

"

2. programmiere vorzugsweise in englisch; vor allem bei grösseren / umfangreichen vorhaben.

cx
Mit Zitat antworten
  #4  
Alt 02.06.2010, 10:52:38
Leyyin Leyyin ist offline
Anfänger
 
Registriert seit: May 2010
Alter: 44
Beiträge: 67
AW: SQL-Syntax-Fehler, MySQL Version

Zitat:
Zitat von knight1 Beitrag anzeigen
Mir erschließt sich der Sinn der Zeilenumbruchs-"Steuerzeichen" \n nicht die Du in das Statement mit reinschreibst.
Ansonsten sieht das Statement meiner Meinung nach, nach dem ersten "überfliegen", in Ordnung aus. Ich kann mich aber auch Irren.
Danke Knight1,

die Steuerzeichen haben mich auch gestört aber das hat seinen Grund. So ist es passiert: Zuerst hat meine Anfrage nicht funktioniert. Dann habe ich es bei phpMyAdmin rumprobiert , am ende hinbekommen. Die funktionierende Anfrage habe ich in php-Code umgewandelt und diese in meinem Code kopiert. Steuerzeichen sind deswegen enthalten. :) Ich kann sie aber gerne entfernen :) Ist kein Problem.
Mit Zitat antworten
  #5  
Alt 02.06.2010, 11:00:53
Leyyin Leyyin ist offline
Anfänger
 
Registriert seit: May 2010
Alter: 44
Beiträge: 67
AW: SQL-Syntax-Fehler, MySQL Version

Zitat:
Zitat von cortex Beitrag anzeigen
ehrlich gesagt wundert's mich, dass die anweisung überhaupt funtioniert
Sieht es soo schlimm aus?

Zitat:
Zitat von cortex Beitrag anzeigen
warum konkatenierst du die einzelnen bestandteile des sql-statements?
Na ja... Ich habe alles, was ich gelernt habe -vom 0 angefangen- von dem zuvor erwähnten Buch (PHP & MySQL vom Kopf bis Fuß) gelernt und dort stehen die Anfragen nur in diesen Schreibweise. Eigentlich die Art und Weise wie du empfehlt hast kommt mir leichter vor. Ich mache es in der Zukunft so. :) Herzlichen Dank für die Empfehlung.

Zitat:
Zitat von cortex Beitrag anzeigen
programmiere vorzugsweise in englisch; vor allem bei grösseren / umfangreichen vorhaben.
Jetz schäme ich mich es zuzugeben: Ich kann leider kein Englisch...
Mit Zitat antworten
  #6  
Alt 02.06.2010, 11:10:11
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
AW: SQL-Syntax-Fehler, MySQL Version

Zitat:
Zitat von Leyyin Beitrag anzeigen
Sieht es soo schlimm aus?
ja, denn steuerzeichen haben - wie bereits angedeutet - nichts in einem sql-statement zu suchen.

Zitat:
Zitat von Leyyin Beitrag anzeigen
[...] dort stehen die Anfragen nur in diesen Schreibweise.
ohne den autoren des buches zu nahe zu treten (und ohne die quelle selbst zu prüfen).... diese schreibweise ist schwachsinnig:

- kein sichtbarer mehrwert
- überflüssige notationen (double quotes und stringverknüpfung)
- daher anfälliger für fehler

schau bitte in unsere forenregeln unter punkt d - da sind sehr gute tutorials verlinkt.

Zitat:
Zitat von Leyyin Beitrag anzeigen
Jetz schäme ich mich es zuzugeben [...]
die nächste baustelle .-)

cx
Mit Zitat antworten
  #7  
Alt 02.06.2010, 13:19:54
Leyyin Leyyin ist offline
Anfänger
 
Registriert seit: May 2010
Alter: 44
Beiträge: 67
AW: SQL-Syntax-Fehler, MySQL Version

Hurraa! Diese Fehlermeldung habe ich nicht mehr! :) Ich danke euch.

Zitat:
Zitat von cortex Beitrag anzeigen
(...) diese schreibweise ist schwachsinnig (...)
Denke ich auch. ok... ich lasse sie ab jetzt fallen. Keine Stuerzeichen mehr in SQL-statement! Aber ich liebe mein Buch immer noch ;)


Zitat:
Zitat von cortex Beitrag anzeigen
schau bitte in unsere forenregeln unter punkt d - da sind sehr gute tutorials verlinkt.
Gerne... Im ersten Gelegenheit...

Gut... aber jetzt habe ich eine andere Fehlermeldung, die ich wieder nicht beseitigen kann.
Und zwar so:
[mod: verschoben, neue Frage neuer Thread]
Mit Zitat antworten
  #8  
Alt 06.06.2010, 13:01:57
Leyyin Leyyin ist offline
Anfänger
 
Registriert seit: May 2010
Alter: 44
Beiträge: 67
AW: SQL-Syntax-Fehler, MySQL Version

Ich habe wieder die selbe Fehlermeldung :(

"Etwas stimmte mit dem Query nicht: 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 '@googlemail.com' at line 8"

Der Fehler liegt irgendwie an Mail-Adresse, vielleicht beim Where Klausel aber verstehe ich nicht, was es ist.
Außerdem ist die Zeilenangabe (8) stimmt nicht. Diese Code steht zwischen den Zeilen 138-173. Wiese steht hier (... at line 8)?

Sorry, wenn ich immer mit den selben Kleinigkeiten euch beschäftige. Ich komme aber nicht voran bevor ich diesen überwinde.

Danke schon jetzt.

PHP-Code:
public function doUpdate(array $param) {
   
//teilnehmer JOIN (teilnehmer_job JOIN institut)
   
$jointeil =
   
"
       ak_teilnehmer AS t
       LEFT JOIN (
              ak_teilnehmer_job AS tj
                   INNER JOIN ak_institut AS i ON tj.tj_institut = i.i_id
              )
       ON t.t_id = tj.tj_teilnehmer
        "
;
        
   
$sql_update "UPDATE " $jointeil .
                 
" SET t.t_titel = '".$param['titel']."', t.t_vname = '".$param['vorname']."', t.t_nname = '".$param['nachname']."', " .
                     
"t.t_geb_datum = '".$param['geburtsdatum']."', t.t_beruf = '".$param['beruf']."', t.t_str = '".$param['str']."', " .
                     
"t.t_hnr = '".$param['hausnr']."', t.t_plz = '".$param['plz']."', t.t_tel = '".$param['tel']."', " .
                     
"t.t_mobil = '".$param['mobil']."', t.t_email = '".$param['email']."', " .
                     
"tj.tj_position = '".$param['position']."', tj.tj_abteilung = '".$param['abteilung']."', " .
                     
"tj.tj_str = '".$param['institutstr']."', tj.tj_hnr = '".$param['instituthnr']."', " .
                     
"tj.tj_plz = '".$param['institutplz']."', tj.tj_tel = '".$param['instituttel']."', " .
                     
"i.i_name = '".$param['institutname']."' " .
                 
"WHERE t.t_email = ".$param['email'];

   
$update self::$db->query($sql_update) or die('Etwas stimmte mit dem Query nicht: '.self::$db -> error); 
Mit Zitat antworten
  #9  
Alt 06.06.2010, 13:09:47
knight1 knight1 ist offline
Junior Member
 
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
knight1 eine Nachricht über MSN schicken knight1 eine Nachricht über Skype™ schicken
AW: SQL-Syntax-Fehler, MySQL Version

http://de.wikipedia.org/wiki/SQL-Injection
http://www.php.net/manual/de/mysqli....ape-string.php
__________________
Please visit: http://www.kaikordel.de

Geändert von cortex (07.06.2010 um 10:33:30 Uhr) Grund: überflüssige zitierung
Mit Zitat antworten
  #10  
Alt 06.06.2010, 14:31:36
Leyyin Leyyin ist offline
Anfänger
 
Registriert seit: May 2010
Alter: 44
Beiträge: 67
AW: SQL-Syntax-Fehler, MySQL Version

Hmm... Wenn ich mich nicht irre, heißt das, dass ich nun eine Recherce-Aufgabe habe :)
Na gut... :)

Danke für den Tipp.

Dann bis bald ;)
Mit Zitat antworten
Antwort

Stichworte
mysql-version, sql, syntax-fehler


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SQL Datenbank Version 4 zu Version 5 deedoocoo MySQLi/PDO/(MySQL) 3 13.08.2008 20:51:57
mysql syntax problem dlanor PHP Grundlagen 8 25.12.2007 16:41:23
SQL syntax error DangerLes MySQLi/PDO/(MySQL) 0 08.03.2004 21:55:53
PHP SQL Fehler kevintest1 PHP Grundlagen 1 03.12.2002 18:31:31
ICH HASSE MYSQL! Wo is jetzt schon wieder der Fehler? mad-boy PHP Grundlagen 14 25.11.2002 14:55:43


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:57:04 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt