MySQL Fehlermeldung
ralf
- php
0 Aquariophile0 ralf
0 Daniela Koller0 ralf0 Daniela Koller0 ralf0 Daniela Koller
0 Mel0 ralf
Hallo,
ich bekomme bei meiner SQL anfrage von MySQL die Fehlermeldung "Query was empty". weiss hier jemand weiter?
gruss und danke
ralf
Dieser Text ist frei erfunden und stellt keinen Anspruch
auf Korrektheit bzw. Richtigkeit! Daher wird vom Autor
keinerlei Haftung für den Inhalt übernommen!
Vor Nachahmung wird abgeraten. Um untenstehenden Text
lesen zu dürfen, müssen Sie dieser Vereinbarung zustimmen.
-----------------------------------------------------------
Hallo
Stell Dir die DB vor wie eine Tabelle
Sagen wir die Tabelle heißt "bla"
Die Feldnamen stehen drüber
id text date
+-------------------+
| 1 | huhu | 1.3. |
| 2 | | 4.7. |
+-------------------+
wenn ich nun also sage:
SELECT * FROM bla WHERE ID='2';
bekomme ich als ergebnis
+-------------------+
| 2 | | 4.7. |
+-------------------+
Wenn Du nun aber sagst
SELECT text from bla where id='2';
bekommst Du Deine Meldung weil in der Spalte nix drin ist.
Also ist der Query EMPTY.
Soweit klar?
Gut, weiter.
Beim erstellen(!!) der Tabelle hast Du wahrscheinich bei der spalte wo Du das ausgegeben bekommst wahrscheinlich
angebenen "NOT NULL"
Wenn Du das wegmachst,
steht in jeder leeren Spalte "NULL" drin
dann passiert das ned mit dem EPMTY QUERY
Nachträgliche veränderungen der Spalte mit ALTER TABLE...
Siehe http://www.MySQL.com
LG
Aquariophile
Beim erstellen(!!) der Tabelle hast Du wahrscheinich bei der spalte wo Du das ausgegeben bekommst wahrscheinlich
angebenen "NOT NULL"
Wenn Du das wegmachst,
steht in jeder leeren Spalte "NULL" drin
dann passiert das ned mit dem EPMTY QUERY
ok habe jetzt alle Felder in der Tabelle auf Ja gestellt also nicht auf NOT NULL sondern auf NULL.
bekomme die meldung aber immer noch
gruss
ralf
Hi Ralf
ich bekomme bei meiner SQL anfrage von MySQL die Fehlermeldung "Query was empty". weiss hier jemand weiter?
kannst du etwas zusätzliche Infos liefern, insbesonders:
Das was Aqua dir sagt mit Spalten die not null drin haben
denke ich eher nicht, die Fehlermeldung müsste da spezifischer
sein. Es sieht eher aus, als wäre der Parameter wo die Query
(also das wo der Auftrag für die DB definiert ist) leer wäre,
deswegen auch den zusammengesetzten String ausgeben lassen.
Gruss Daniela
hi
das ist der string im code:
$textsql="UPDATE text SET id='$id', praxis='$sess_praxis', titel1='$sess_titel1',vorname1='$sess_vorname1', $nachname1='$sess_nachname1', facharzt1='$sess_facharzt1', titel2='$sess_titel2',vorname2='$sess_vorname2', $nachname2='$sess_nachname2', facharzt2='$sess_facharzt2', strasse='$sess_strasse', hausnr='$sess_hausnr', land='$sess_land', plz='$sess_plz', ort='$sess_ort', vorwahl1='$sess_vorwahl1', vorwahl2='$sess_vorwahl2', vorwahl3='$sess_vorwahl3', tel1='$sess_tel1', tel2='$sess_tel2', fax='$sess_fax', email='$sess_email', homepage='$sess_homepage', bank1='$sess_bank1', blz1='$sess_blz1', konto1='$sess_konto1', bank2='$sess_bank2', blz2='$sess_blz2', konto2='$sess_konto2', logo='$sess_logo', datei='$sess_datei', bild='$sess_bild' WHERE id='$id';";
so ruf ich ihn auf
mysql_query($text,$connect);
das ist der string wenn er übergeben wird:
UPDATE text SET id='d62a0ee8c9a700d0ec6e45dd5107ba91', praxis='a', titel1='a',vorname1='a', ='a', facharzt1='a', titel2='a',vorname2='a', ='a', facharzt2='a', strasse='a', hausnr='a', land='a', plz='a', ort='a', vorwahl1='a', vorwahl2='a', vorwahl3='a', tel1='a', tel2='a', fax='a', email='a', homepage='a', bank1='a', blz1='a', konto1='a', bank2='a', blz2='a', konto2='a', logo='', datei='', bild='' WHERE id='d62a0ee8c9a700d0ec6e45dd5107ba91'
und die fehlermeldung ist einfach nur
query was empty
gruss
Hi Ralf
$textsql="UPDATE text SET id='$id', praxis='$sess_praxis',
titel1='$sess_titel1',vorname1='$sess_vorname1',
$nachname1='$sess_nachname1', facharzt1='$sess_facharzt1',
titel2='$sess_titel2',vorname2='$sess_vorname2',
$nachname2='$sess_nachname2', facharzt2='$sess_facharzt2',
^
strasse='$sess_strasse', hausnr='$sess_hausnr', land='$sess_land',
plz='$sess_plz', ort='$sess_ort', vorwahl1='$sess_vorwahl1',
vorwahl2='$sess_vorwahl2', vorwahl3='$sess_vorwahl3', tel1='$sess_tel1',
tel2='$sess_tel2', fax='$sess_fax', email='$sess_email',
homepage='$sess_homepage', bank1='$sess_bank1', blz1='$sess_blz1',
konto1='$sess_konto1', bank2='$sess_bank2', blz2='$sess_blz2',
konto2='$sess_konto2', logo='$sess_logo', datei='$sess_datei',
bild='$sess_bild' WHERE id='$id';";
Was daran auffällt (mit ^ gekennzeichnet), ist, das du nicht nachname2
sondern $nachname2 setzen willst, ansich nicht schlimm falls $nachname2
den Spaltennamen enthält, scheint jedoch eher n Tippfehler zu sein.
das ist der string wenn er übergeben wird:
UPDATE text SET id='d62a0ee8c9a700d0ec6e45dd5107ba91',
praxis='a', titel1='a',vorname1='a', ='a', facharzt1='a', titel2='a',
vorname2='a', ='a', facharzt2='a', strasse='a', hausnr='a', land='a',
^
plz='a', ort='a', vorwahl1='a', vorwahl2='a', vorwahl3='a', tel1='a',
tel2='a', fax='a', email='a', homepage='a', bank1='a', blz1='a',
konto1='a', bank2='a', blz2='a', konto2='a', logo='', datei='',
bild='' WHERE id='d62a0ee8c9a700d0ec6e45dd5107ba91'
Hier siehst du das nochmal, $nachname2 ist leer, deswegen ='a', dass
ist jedoch vom syntax her falsch.
Ansonsten noch anzumerken, logo, datei und bild, sind die absichtlich
leer? Neu zu setzen brauchst du übrigens nur die Felder die du auch
ändern willst, also zb id nicht (ich glaube, Primärschlüssel kann
man auch gar nicht ändern).
Dann solltest du prüfen ob es den Record mit der ID den du updaten
willst überhaupt schon gibt, von der Fehlermeldung her nehm ich aber
an, es ist der Syntaxfehler der ihn gestört hat.
Dein Datenbankdesign solltest du auch nochmal anschauen, das sieht nach
viel Redundanz aus und dem Versuch mehrfach vorkommende Attribute
zwanghaft in die Tabelle zu quetschen und zu hoffen das du genug definiert
hast.
Auch zu den NOT NULL von Aqua noch eine Bemerkung, das solltest du
wirklich nur auf NULL ändern wenn du genau weist was du tust, sonst
handelst du dir möglicherweise Probleme ein damit. NULL bedeutet
undefiniert, und da kann dann wirklich alles drinstehen und du
hast ein Zusatzflag das du abfragen darfst ob das jetzt was sinnvolles
ist oder NULL (uu tut das auch PHP bereits für dich).
Gruss Daniela
hi
Was daran auffällt (mit ^ gekennzeichnet), ist, das du nicht nachname2
sondern $nachname2 setzen willst, ansich nicht schlimm falls $nachname2
den Spaltennamen enthält, scheint jedoch eher n Tippfehler zu sein.
stimmt, das is n tippfehler.
Ansonsten noch anzumerken, logo, datei und bild, sind die absichtlich
leer? Neu zu setzen brauchst du übrigens nur die Felder die du auch
ändern willst, also zb id nicht (ich glaube, Primärschlüssel kann
man auch gar nicht ändern).
die sind absichtlich leer, aber jenach user eingabe kann auch was drin sein.
Dann solltest du prüfen ob es den Record mit der ID den du updaten
willst überhaupt schon gibt, von der Fehlermeldung her nehm ich aber
an, es ist der Syntaxfehler der ihn gestört hat.
das mach ich, wollte hier nur platz sparen. sieht so aus:
$sql="SELECT id FROM text WHERE id='$id';";
$result=mysql_query($sql,$connect);
if ($result) {
$textsql="UPDATE
} else {
$textsql="INERT
}
Dein Datenbankdesign solltest du auch nochmal anschauen, das sieht nach
viel Redundanz aus und dem Versuch mehrfach vorkommende Attribute
zwanghaft in die Tabelle zu quetschen und zu hoffen das du genug definiert
hast.
wie meinst du das genau?
gruss
Hi Ralf
stimmt, das is n tippfehler.
Klappts denn wenn das korrigiert ist oder hast du immernoch
die Fehlermeldung?
die sind absichtlich leer, aber jenach user eingabe kann auch was drin sein.
dann ist ja alles in Ordnung, syntaktisch ist das auf alle Fälle in Ordnung
das mach ich, wollte hier nur platz sparen. sieht so aus:
if ($result) {
$textsql="UPDATE
} else {
$textsql="INERT
}
8-tung Insert und nicht Update falls das nicht nur abschreibfehler ist
Dein Datenbankdesign solltest du auch nochmal anschauen, das sieht nach
viel Redundanz aus und dem Versuch mehrfach vorkommende Attribute
zwanghaft in die Tabelle zu quetschen und zu hoffen das du genug definiert
hast.
wie meinst du das genau?
Es sieht einfach eher wie eine flache Tabelle aus als ne schöne
normalisierte Datenbank. Je nach dem wie erweiterbar das sein
soll und was du damit für Auswertungen machen willst wird das
ein Problem werden. Ist nichts dringendes oder was nicht
funktionieren wird sondern einfach nur Stil, Buchempfehlungen und
vielleicht auch Links zu Datenbankdesign findest du im Archiv.
Klappt es denn nun mit den Änderungen von vorher?
Gruss Daniela
hi
Klappts denn wenn das korrigiert ist oder hast du immernoch
die Fehlermeldung?
nein
if ($result) {
$textsql="UPDATE
} else {
$textsql="INERT
}
8-tung Insert und nicht Update falls das nicht nur abschreibfehler ist
Doch wieder n schreibfehler *g*
Es sieht einfach eher wie eine flache Tabelle aus als ne schöne
normalisierte Datenbank. Je nach dem wie erweiterbar das sein
soll und was du damit für Auswertungen machen willst wird das
ein Problem werden. Ist nichts dringendes oder was nicht
funktionieren wird sondern einfach nur Stil, Buchempfehlungen und
vielleicht auch Links zu Datenbankdesign findest du im Archiv.
es sind felder eines formulares die gespeichert werden, als id nehm ich meistens die sessionid weil sie immer einzigartig ist, es sei denn es liegt eine anmeldung (login usw.) vor, dann nehm ich natürlich ne andere nummer (auto_increment aus der tabelle)
die felder ruf ich in einem anderem script wieder ab, weil dort eine pdf erzeugt wird.
aber zum problem, es ist immer noch da :-)
gruss
ralf
Hi,
hab n tippfehler (siehe eintrag von mel) nur hab ich damit n anderes problem.
hab ja den code:
$sql="SELECT * FROM text WHERE id='$id';";
$result=mysql_query($sql,$connect);
if ($result) {
$textsql="UPDATE
} else {
$textsql="INSERT text
}
mysql_query($textsql,$connect);
Nun ist es aber so das der Datensatz mit der id nicht existiert. Trotzdem ruft er den UPDATE string auf, wieso?
gruss
Hoi,
$result=mysql_query($sql,$connect);
[..]
if ($result) {
Nun ist es aber so das der Datensatz mit der id nicht existiert.
Trotzdem ruft er den UPDATE string auf, wieso?
Weil bei if($result) nur geprueft wird, ob in $result ein Wert ungleich
0 steht. Und da $result eine Art Pointer ist, ist er natuerlich
ungleich 0. Ergo musst du ueberpruefen, ob von dem Select Reihen
zurueck gekommen sind:
if(mysql_num_rows($result)) {
$textsql = "UPDATE...";
}
else {
$textsql = "INSERT ...";
}
Gruesse,
c.j.k
Hallo,
$textsql="UPDATE text SET id='$id', praxis='$sess_praxis', titel1='$sess_titel1',vorname1='$sess_vorname1', $nachname1='$sess_nachname1', facharzt1='$sess_facharzt1', titel2='$sess_titel2',vorname2='$sess_vorname2', $nachname2='$sess_nachname2', facharzt2='$sess_facharzt2', strasse='$sess_strasse', hausnr='$sess_hausnr', land='$sess_land', plz='$sess_plz', ort='$sess_ort', vorwahl1='$sess_vorwahl1', vorwahl2='$sess_vorwahl2', vorwahl3='$sess_vorwahl3', tel1='$sess_tel1', tel2='$sess_tel2', fax='$sess_fax', email='$sess_email', homepage='$sess_homepage', bank1='$sess_bank1', blz1='$sess_blz1', konto1='$sess_konto1', bank2='$sess_bank2', blz2='$sess_blz2', konto2='$sess_konto2', logo='$sess_logo', datei='$sess_datei', bild='$sess_bild' WHERE id='$id';";
Hier definierst Du $textsql
so ruf ich ihn auf
mysql_query($text,$connect);
Aber hier rufst Du nicht $textsql, sondern nur $text auf!
Gruss, Mel