php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 16-11-2006, 09:43
Rasmo
 Newbie
Links : Onlinestatus : Rasmo ist offline
Registriert seit: Nov 2006
Beiträge: 9
Rasmo ist zur Zeit noch ein unbeschriebenes Blatt
Question [MySQL 4.1] Fehler 1064 beim ändern der Daten

Hallo Ihr Spezialisten,

ich habe ein Problem welches sich völlig meiner logischen Fehleranalyse entzieht.
Mit folgender Anweisung fügen ich Daten in meine MySQL-Db ein:

$result = @mysql_query("update products set info='hier stehen die Daten' where id=1);

Also eine ganz banale SQL-Anweisung, die auch so weit läuft, so lange der Text im Feld info eine bestimmte Länge nicht überschreitet. Auch hier gibt es keinen logischen Zusammenhang. Bei einem bestimmten Text (HTML-Code) liegt die Grenze bei 950 Zeichen. Füge ich nur ein Zeichen mehr ein, erhalte ich folgende Fehlermeldung:

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 ''

Ich habe zuerst gedacht es liegt hat den ganzen HTML-Tags. Habe dann einmal nur Buchstaben überschrieben, da waren es dann nur 868 Zeichen die übergeben werden konnten -> selbe Fehlermeldung.

Das kuriose ist, wenn ich dann die "fehlerhafte" SQL-Anweisung mit einem MySQL QueryBrowser ausführe, werden die Daten in die Datenbank geschrieben. Führe ich die Anweisung mittels PHP-Code aus, dann nicht.
Das Problem tritt sowohl auf meinem Test-Rechner mit einem localen Apache und MySQL,
also auch Online auf dem Server auf.

Wie gesagt, ich habe keine Idee? Vielleicht irgendwelche Cache Parameter o.ä. was man setzen muss?
Hat jemand eine Idee?

Viele Grüße

Ralf Smolin
Mit Zitat antworten
  #2 (permalink)  
Alt 16-11-2006, 09:45
XGremliN
 PHP Senior
Links : Onlinestatus : XGremliN ist offline
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
XGremliN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Dir fehlt ein " vor der schließenden Klammer!

Übrigens lies das: http://php-resource.de/forum/showthr...threadid=47906
__________________
it's not a bug,
it's a feature!
Mit Zitat antworten
  #3 (permalink)  
Alt 16-11-2006, 10:07
Rasmo
 Newbie
Links : Onlinestatus : Rasmo ist offline
Registriert seit: Nov 2006
Beiträge: 9
Rasmo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

> Dir fehlt ein " vor der schließenden Klammer!

Ja, danke. Habe ich beim Schreiben dieses Beitrags vergessen.
Das hat aber nichts mit dem Problem an sich zu tun.

Ralf
Mit Zitat antworten
  #4 (permalink)  
Alt 16-11-2006, 10:12
XGremliN
 PHP Senior
Links : Onlinestatus : XGremliN ist offline
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
XGremliN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Mach mal das @ weg, lass dir deine Query mal ausgeben und der Fehler findet sich schneller!
Ich schätze, bei deiner Variablenübergabe geht was schief.
__________________
it's not a bug,
it's a feature!
Mit Zitat antworten
  #5 (permalink)  
Alt 16-11-2006, 11:12
Rasmo
 Newbie
Links : Onlinestatus : Rasmo ist offline
Registriert seit: Nov 2006
Beiträge: 9
Rasmo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

> Mach mal das @ weg, lass dir deine Query mal ausgeben und der Fehler
> findet sich schneller!

Das @ habe ich weggelassen. Der Fehler bleibt.
Den Query habe ich mir anzeigen lassen und siehe da, die ID wird
nicht mit ausgelesen.
Ich habe jetzt praktisch ein: update products set info='123' where ID=
und dann hört’s auf.

Wie kann ich meine SQL Anweisung auf dem Server einlesen, auch bei
größeren Strings? Meine Vorgehensweise ist folgende: Ich schreibe die SQL Anweisung in eine Datei, laden Sie auf den Server, dann rufe ich eine PHP-Seite auf die die Datei einließt und die SQL-Anweisungen ausführt.
Ich beschäftige mich noch nicht sehr lang mit PHP und MySQL. Gibt es
einen intelligenteren, besseren Weg Daten in die MYSQL-DB zu übertragen?

Viele Grüße

Ralf
Mit Zitat antworten
  #6 (permalink)  
Alt 16-11-2006, 11:25
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.783
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Meine Vorgehensweise ist folgende: Ich schreibe die SQL Anweisung in eine Datei, laden Sie auf den Server, dann rufe ich eine PHP-Seite auf die die Datei einließt und die SQL-Anweisungen ausführt.

wie bitte? warum definierst du die abfrage nicht direckt in php? z.b.
PHP-Code:
$query "update products set info='hier stehen die Daten' where id=$id";
$result mysql_query($query); 
eine mysqlabfrage ist nichts anderes als eine stinknormale zeichenkette.

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #7 (permalink)  
Alt 16-11-2006, 12:52
Rasmo
 Newbie
Links : Onlinestatus : Rasmo ist offline
Registriert seit: Nov 2006
Beiträge: 9
Rasmo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

> wie bitte? warum definierst du die abfrage nicht direckt in php? z.b.

Ich habe ein Offline-Tool geschrieben, mit dem man die Daten erfassen kann. Jetzt geht es darum diese Daten in die MySQL-DB auf dem Server zu quetschen.

Aber ich glaube ich habe das Problem gefunden.
Hiermit lese ich die Datei aus:

$data = fgetcsv ($handle, 1000, "|")

Diese 1000 ist der springende Punkt. Hier muss ich einfach einen
größeren Wert nehmen.

Du hast mich aber mit deinen Hinweise an diese Stelle geführt.
Danke.

Viele Grüße

Ralf
Mit Zitat antworten
  #8 (permalink)  
Alt 16-11-2006, 13:07
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.783
Kropff befindet sich auf einem aufstrebenden Ast
Standard

mach doch aus der 1000 ein filesize($datei_name)

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #9 (permalink)  
Alt 16-11-2006, 13:30
Rasmo
 Newbie
Links : Onlinestatus : Rasmo ist offline
Registriert seit: Nov 2006
Beiträge: 9
Rasmo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo Peter,

> mach doch aus der 1000 ein filesize($datei_name)

Das geht leider nicht. Es stehen mehrere SQL-Anweisungen in der Datei und ich habe gemerkt, je größer dieser Wert ist, desto länger dauert die
Verarbeitung.
Ich muss nur eine halbwegs vertretbare Textlängen-Begrenzung wählen.

Danke.
Mit Zitat antworten
  #10 (permalink)  
Alt 16-11-2006, 13:38
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.783
Kropff befindet sich auf einem aufstrebenden Ast
Standard

ich verstehe immer noch nicht, warum du deine sql-befehle in riesig große textdateien packst. das erscheint mir als die unpraktikabelste lösung überhaupt.

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #11 (permalink)  
Alt 16-11-2006, 18:17
Rasmo
 Newbie
Links : Onlinestatus : Rasmo ist offline
Registriert seit: Nov 2006
Beiträge: 9
Rasmo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo Peter,

> ich verstehe immer noch nicht, warum du deine sql-befehle in riesig
> große textdateien packst. das erscheint mir als die unpraktikabelste
> lösung überhaupt.

Wie schon gesagt, habe ich noch nicht viel Erfahrung mit PHP und MySQL und wenn es eine intelligentere Lösung gibt, lass es mich bitte wissen.
Ich habe lokale Daten in einer Access-DB, diese möchte ich exportieren und
auf dem Server in eine MySQL DB mittels PHP importieren.
Zurzeit realisiere ich das über eine Datei die ich lokal erstellen, auf den Server lade und dort mittels PHP die ganzen SQL-Anweisungen einlese und ausführe.
Ich denke (hoffe) das es einen besseren Weg gibt, aber da fehlt mir noch die Erfahrung. Wenn du also einen Tipp für mich hast wie es besser geht,
lass es mich ruhig wissen.

Danke.

Viele Grüße

Ralf
Mit Zitat antworten
  #12 (permalink)  
Alt 16-11-2006, 19:01
kuddeldaddeldu
 Registrierter Benutzer
Links : Onlinestatus : kuddeldaddeldu ist offline
Registriert seit: Sep 2006
Beiträge: 437
kuddeldaddeldu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo Ralf,

ich kenne mich nicht wirklich mit Access aus, aber gibt es da keine Möglichkeit, einen MySQL-kompatiblen Dump zu erstellen?
Den könntest Du dann doch einfach über bspw. PMA importieren. Vielleicht habe ich Dich ja falsch verstanden, aber für mich
sieht es so aus, als versuchtest Du, genau das nachzubauen.

LG
Mit Zitat antworten
  #13 (permalink)  
Alt 16-11-2006, 20:05
Rasmo
 Newbie
Links : Onlinestatus : Rasmo ist offline
Registriert seit: Nov 2006
Beiträge: 9
Rasmo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

> ich kenne mich nicht wirklich mit Access aus, aber gibt es da keine
> Möglichkeit, einen MySQL-kompatiblen Dump zu erstellen?
> Den könntest Du dann doch einfach über bspw. PMA importieren.
> Vielleicht habe ich Dich ja falsch verstanden, aber für mich
> sieht es so aus, als versuchtest Du, genau das nachzubauen.

Nein, geht leider nicht. Die Datenbanken sind nicht identisch. Es sollen nur
bestimmte Teile aus der Access-DB in die MySQL-DB. Da die Datenbanken
nicht identisch sind bastelte ich lokal die SQL-Anweisungen mit den entsprechenden Daten zusammen und muss sie dann zum Server schicken.
Wie gesagt, wenn es besser geht, für Hinweise bin ich dankbar.

Viele Grüße

Ralf
Mit Zitat antworten
  #14 (permalink)  
Alt 16-11-2006, 20:30
kuddeldaddeldu
 Registrierter Benutzer
Links : Onlinestatus : kuddeldaddeldu ist offline
Registriert seit: Sep 2006
Beiträge: 437
kuddeldaddeldu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

D.h. Du willst aus einer Tabelle nur die neuesten Datensätze exportieren. Wenn Du das lokal schon aus Deiner Access DB herausbekommst, musst Du doch nur noch darauf achten, das in einem Format zu speichern, das Du auf Deinem Zielserver importieren kannst. Cocoa kann z.B. auch CSV-Dateien importieren. Allerdings bestehen CSV-Dateien nicht aus SQL-Statements sondern aus Colon Separated Values. Du kannst also entweder einen (Teil-)Dump erstellen, indem Du SQL-Statements speicherst, oder Du erzeugst eine CSV-Datei mit den Datensätzen. Ob PMA das importieren kann, weiss ich gerade nicht, musst Du mal schauen.

LG
Mit Zitat antworten
  #15 (permalink)  
Alt 16-11-2006, 20:35
Rasmo
 Newbie
Links : Onlinestatus : Rasmo ist offline
Registriert seit: Nov 2006
Beiträge: 9
Rasmo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

> speicherst, oder Du erzeugst eine CSV-Datei mit den Datensätzen. Ob
> PMA das importieren kann, weiss ich gerade nicht, musst Du mal schauen.


CSV kenne ich. Aber was ist PMA? Gibt es "Schnittstellen" oder Funktionen um CSV-Dateien mittels PHP aus- bzw. in MySQL einzulesen?

Viele Grüße

Ralf
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Projektmanagement Damals und Heute
Projektmanagement Damals und HeuteWerfen Sie einen Blick auf das, was sich verändert hat, und entdecken Sie, wo die Zukunft dieses Gebietes hinsteuert.

18.01.2021 | Berni

Arbeitsmanagement-Tools
Arbeitsmanagement-ToolsWarum jedes Team Arbeitsmanagement-Tools benötigt. Man schätzt, dass 25% eines durchschnittlichen Mitarbeiter-Tages durch ineffiziente Arbeit vergeudet werden.

11.12.2020 | Berni


 

Aktuelle PHP Scripte

PHP Newsletter Script SuperWebMailer ansehen PHP Newsletter Script SuperWebMailer

Die webbasierte PHP Newsletter Software SuperWebMailer ist die optimale Lösung zur Durchführung eines erfolgreichen E-Mail-Marketings. Zur Nutzung des PHP Script-Pakets ist eine eigene Webpräsenz/Server mit PHP 5 oder neuer, MySQL 4 oder neuer und die

29.04.2021 mirko_swm | Kategorie: PHP/ Mail
OXID eShop

Mit OXID eshop bieten wir Ihnen eine modulare und skalierbare Internet Shopping Software mit einem hervorragenden Preis-/Leistungsverhältnis.

29.04.2021 eric.jankowfsky@ | Kategorie: PHP/ Shops
PHP-Login

Die Aufgabenstellung bestand darin, ein einfaches Login-Script zu erstellen, dass schnell und universell auf jeder Webseiten eingebaut werden kann. Der Schwerpunkt lag dabei auf der Entwicklung eines universell einsetzbarem Modul für den Login und zur

05.04.2021 Wallhalla | Kategorie: PHP/ Kundenverwaltung
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:49 Uhr.