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

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:24 Uhr.