Supportnet / Forum / Datenbanken
mysql_insert_id() funktioniert nicht :-(
Frage
Hallo!
Ich arbeite mit MySQL und PHP auf meinem WAMPP (Windows Webserver).
Ich habe zwei Tabellen (tab1, tab2) in denen halt Daten gespeichert sind und jeweils mit autoincrement eine ID erzeugt wird. Da ich die beiden Tabellen verknüpfen will, will ich die ID von tab1 in eine Spalte in tab2 auch speichern, um somit Beziehungen herstellen zu können. Normalerweise sollte folgender Code funktionieren, aber tut es nicht und ich weiss nicht warum:
[code]
$db = mysql_connect("localhost","root","");
if (!$db)
{
echo("<p>Zur Zeit keine Verbindung zum Datenbankserver möglich.</p>");
exit();
}
$res = mysql_db_query("portal2", "SELECT * FROM tab1,tab2");
if (!$res)
{
echo("<p>Eine Anfrage an die Datenbank ist nicht möglich.</p>");
exit();
}
$tabelle1 = "INSERT INTO `tab1` (`typ`, `subtyp`, `beschreibung`)
VALUES ('".$typ."','".$subtyp."','".$beschreibung."')";
//printf("last ID:" ,mysql_insert_id()); //wenn ich hier auslese, dann zeigt er mir keinen Wert an
$last_id = mysql_insert_id();
$tabelle2= "INSERT INTO `tab2` (`tab1_id`,`name`,`alter`,....)VALUES ('".$last_id."','".$name."',......");
printf ("letzte ID: $last_id"); //hier gibt er mir "0" als Wert zurück.
[/code]
Kann mir jemand sagen, warum ich die ID nicht auslesen kann???
Danke, Anja
Antwort 1 von Anja77
Kann mir denn keiner helfen????
:-(((
:-(((
Antwort 2 von semi
Kann es sein, dass Deine ID-Spalte vom Typ varchar ist? (Sieht im zweiten INSERT zumindest danach aus '".$last_id."')
Ich kann mich irren aber AUTOINC funktioniert nur bei Int-Spalten.
Gruß,
Michael
Ich kann mich irren aber AUTOINC funktioniert nur bei Int-Spalten.
Gruß,
Michael
Antwort 3 von Anja77
Danke für Deine Antwort, aber ich habe es richtig gesetzt mit int (16). Ich verstehe nicht, wie Du darauf kommst, dass ich das varchar gesetzt habe??? Hätte ja sein können, aber "leider" ist es richtig :-).
Gibt es noch mehr Tipps?
Danke!
Gibt es noch mehr Tipps?
Danke!
Antwort 4 von semi
Ich habe es vermutet, da Du in dem zweiten INSERT die id Spalte in einfachen Anführungszeichen einfügst. ....'".$last_id."' ....
Versuche es vielleicht über die mysql-funktion LAST_INSERT_ID()
Gruß,
Michael
Versuche es vielleicht über die mysql-funktion LAST_INSERT_ID()
"INSERT INTO tab2 (tab1_id,name,alter,....)
VALUES (LAST_INSERT_ID(),'".$name."',....)");Gruß,
Michael
Antwort 5 von Anja77
Damit hatte ich es auch schon versucht, aber habs trotzdem noch mal probiert, ohne Erfolg. Ich verstehe es einfach nicht, denn der Code sieht doch vollkommen ok aus.
Gibts vielleicht noch ne Lösung???
Es kann aber nicht an irgendwelchen Einstellungen von meinem Webserver liegen, nein???
Anja
Gibts vielleicht noch ne Lösung???
Es kann aber nicht an irgendwelchen Einstellungen von meinem Webserver liegen, nein???
Anja
Antwort 6 von semi
Am Webserver liegt es garantiert nicht.
Wird das erste INSERT ohne Fehler ausgeführt?
Versuche mal den Fehlercode abzufragen.
Wird das erste INSERT ohne Fehler ausgeführt?
Versuche mal den Fehlercode abzufragen.
$tabelle1 = .....
if(mysql_errno())
{
die(mysql_error());
} und sag' Bescheid, was passiert.Antwort 7 von semi
Antwort 8 von Anja77
Also habe Deine if-Schleife eingefügt und es ist alles ok, keine Fehlermeldung oder sowas. Es wird ja auch alles richtig in die DB eingetragen.
Habe im Netz auch folgendes gefunden:
Habs probiert und beim Abfragen von last_id spuckt er mir genau das aus, was in "" steht, also :
SELECT LAST_INSERT_ID() AS id from tab1
Schreibe ich den Code ohne "", also:
dann bekomme ich ne Fehlermeldung:
Parse error: parse error, unexpected T_STRING in C:\wampp2c\htdocs........ in line 186
(was genau diese Zeile wäre)
Warum soll ich das mit dem Clienten testen?? Ist sowas nicht bei meinem Server integriert?
Anja
Habe im Netz auch folgendes gefunden:
$last_id="SELECT LAST_INSERT_ID() AS id from tab1";
Habs probiert und beim Abfragen von last_id spuckt er mir genau das aus, was in "" steht, also :
SELECT LAST_INSERT_ID() AS id from tab1
Schreibe ich den Code ohne "", also:
$last_id=SELECT LAST_INSERT_ID() AS id from tab1;
dann bekomme ich ne Fehlermeldung:
Parse error: parse error, unexpected T_STRING in C:\wampp2c\htdocs........ in line 186
(was genau diese Zeile wäre)
Warum soll ich das mit dem Clienten testen?? Ist sowas nicht bei meinem Server integriert?
Anja
Antwort 9 von semi
Kann es sein, dass Du die INSERT-Statements gar nicht ausführst? :-)
Versuche das hier
Versuche das hier
$db = mysql_connect("localhost","root","");
if(!$db)
{
echo("<p>Zur Zeit keine Verbindung zum Datenbankserver möglich.</p>");
exit();
}
mysql_select_db("portal2");
mysql_query(
"INSERT INTO tab1 (typ, subtyp, beschreibung) "
"VALUES ('$typ','$subtyp','$beschreibung')"
);
$last_id = mysql_insert_id();
echo "last ID: $last_id";
mysql_query(
"INSERT INTO tab2 (tab1_id,name,alter,....) "
"VALUES ($last_id,'$name',......")
);
Antwort 10 von semi
Kleine Korrektur ( . fehlt in beiden Strings)
mysql_query(
"INSERT INTO tab1 (typ, subtyp, beschreibung) "
."VALUES ('$typ','$subtyp','$beschreibung')"
);
$last_id = mysql_insert_id();
echo "last ID: $last_id";
mysql_query(
"INSERT INTO tab2 (tab1_id,name,alter,....) "
."VALUES ($last_id,'$name',......")
);Antwort 11 von Anja77
Hey, es funktioniert :-))))))
Aber wie kommt es, dass ich vor Deinen Änderungen trotzdem Einträge in meiner Tabelle hatte? Er hats also trotzdem ausgeführt. Is ja komisch, oder???
Jetzt kommt übrigens nur noch eine kleine Fehlermeldung. Folgenden Code führe ich nach meinen Einträgen noch aus:
Ich bekomme also nach meinem Insert folgende Meldung ausgegeben:
Fehler beim Hinzufügen der Daten: You have an error in your SQL syntax near '1' at line 1.
Woran liegt das? Er trägt jetzt alles korrekt in die DB ein und trotzdem sagt er, dass die Syntac nicht stimmt. Hast Du vielleicht noch eine Idee??
Vielen Dank erst mal für Deine bisherige Hilfe, sitze schon Stunden dran und kam nicht voran :-(.
Gruß, Anja
Aber wie kommt es, dass ich vor Deinen Änderungen trotzdem Einträge in meiner Tabelle hatte? Er hats also trotzdem ausgeführt. Is ja komisch, oder???
Jetzt kommt übrigens nur noch eine kleine Fehlermeldung. Folgenden Code führe ich nach meinen Einträgen noch aus:
if (@mysql_query($tabelle2))
{
echo ("<p>Hinweis: Die Daten wurden zur Datenbank Tabelle2 hinzugefügt.<br><br><br></p>");
echo ("letzte ID: ");
echo $last_id;
}
else
{
echo ("<p>Fehler beim Hinzufügen der Daten: " .mysql_error() . ".<br><br><br></p>");
echo ("letzte ID: ");
echo $last_id;
}
Ich bekomme also nach meinem Insert folgende Meldung ausgegeben:
Fehler beim Hinzufügen der Daten: You have an error in your SQL syntax near '1' at line 1.
Woran liegt das? Er trägt jetzt alles korrekt in die DB ein und trotzdem sagt er, dass die Syntac nicht stimmt. Hast Du vielleicht noch eine Idee??
Vielen Dank erst mal für Deine bisherige Hilfe, sitze schon Stunden dran und kam nicht voran :-(.
Gruß, Anja
Antwort 12 von semi
Irgendetwas ist an dem INSERT noch falsch.
Korrektur der Korrektur :-) Schreibe es so und sag Bescheid, wie die Ausgabe aussieht
Ich würde Dir wirklich empfehlen, zuerst alles in mySQL-Front zu testen bevor Du es in PHP einbaust.
Testausgabe der Abfrage hilft manchmal auch.
Korrektur der Korrektur :-) Schreibe es so und sag Bescheid, wie die Ausgabe aussieht
$query = "INSERT INTO tab2 (tab1_id,name,alter,....) "
. "VALUES ($last_id,'$name',......)";
echo $query . "<br>";
mysql_query($query);Die schließende Klammer fehlte bzw. war an falscher Stelle.Ich würde Dir wirklich empfehlen, zuerst alles in mySQL-Front zu testen bevor Du es in PHP einbaust.
Testausgabe der Abfrage hilft manchmal auch.
Antwort 13 von Anja77
Also bei Tabelle1 erscheint nun keine Fehlermeldung mehr, da ist alles korrekt, aber bei Tabelle2 ist noch eine da:
Fehler beim Hinzufügen der Daten: You have an error in your SQL syntax near 'alter, monetaere_wirkung, strategische_wirkung, anz_benutzer, fachl_verantw, it_' at line 1.
Hab gesehen, dass bei Deinem $query bei $last_id die Hochkommas noch gefehlt haben und habe sie noch eingefügt (ohne geht es auch nicht).
Kann doch eigentlich nur nen Schreibfehler sein, aber bin es nun schon x-mal durchgegangen und finde nix :-(. Habs doch genauso wie für tab1 geschrieben, komisch :-(.
Anja
Fehler beim Hinzufügen der Daten: You have an error in your SQL syntax near 'alter, monetaere_wirkung, strategische_wirkung, anz_benutzer, fachl_verantw, it_' at line 1.
Hab gesehen, dass bei Deinem $query bei $last_id die Hochkommas noch gefehlt haben und habe sie noch eingefügt (ohne geht es auch nicht).
Kann doch eigentlich nur nen Schreibfehler sein, aber bin es nun schon x-mal durchgegangen und finde nix :-(. Habs doch genauso wie für tab1 geschrieben, komisch :-(.
Anja
Antwort 14 von semi
Ich weiß zu wenig über die Typen der Spalten Deiner Tabelle. Mit dem Sourcecode rückst Du auch nur Stückweise raus :)
Wie sieht die Ausgabe aus Antwort 12 aus (ich meine das mit dem echo)?
Wie sieht die Ausgabe aus Antwort 12 aus (ich meine das mit dem echo)?
Antwort 15 von Anja77
OK, hier ist Nachschub :-). Ich hatte alles bis jetzt vereinfacht (für das Forum hier), damit man es nachvollziehen kann, also ich poste jetzt das Original. Nicht wundern, Tabelle1 heißt hier komponente und Tabelle2 heißt anwendungssystem.
Folgende Meldungen erhalte ich:
--------------------------------------------------------------------
INSERT INTO komponente (ausbaustufe_anwendungslandschaft, typ, subtyp, beschreibung)VALUES ('1999-12-05','CRM','neuersub','keine')
INSERT INTO anwendungssystem (komp_oid, name, alter, monetaere_wirkung, strategische_wirkung, anz_benutzer, fachl_verantw, it_verantw, durchschnitt_conc_user, transaktionsrate, datenvolumen_persistent, wartungskosten, betriebskosten)VALUES ('85','name5','89','2','5','65','ich','du','55','3','65','12','45')
Fehler beim Hinzufügen des Anwendungssystems: You have an error in your SQL syntax near 'alter, monetaere_wirkung, strategische_wirkung, anz_benutzer, fachl_verantw, it_' at line 1.
letzte ID: 85
Hinweis: Das Anwendungssystem "name5" wurde zur Komponente "CRM" hinzugefügt.
--------------------------------------------------------------------
Die Inserts werden eigentlich korrekt ausgegeben, nur werden sie in der TabelleAnwendungssysteme nicht gespeichert :-(. Mein Code sieht nun folgendermaßen aus:
Folgende Meldungen erhalte ich:
--------------------------------------------------------------------
INSERT INTO komponente (ausbaustufe_anwendungslandschaft, typ, subtyp, beschreibung)VALUES ('1999-12-05','CRM','neuersub','keine')
INSERT INTO anwendungssystem (komp_oid, name, alter, monetaere_wirkung, strategische_wirkung, anz_benutzer, fachl_verantw, it_verantw, durchschnitt_conc_user, transaktionsrate, datenvolumen_persistent, wartungskosten, betriebskosten)VALUES ('85','name5','89','2','5','65','ich','du','55','3','65','12','45')
Fehler beim Hinzufügen des Anwendungssystems: You have an error in your SQL syntax near 'alter, monetaere_wirkung, strategische_wirkung, anz_benutzer, fachl_verantw, it_' at line 1.
letzte ID: 85
Hinweis: Das Anwendungssystem "name5" wurde zur Komponente "CRM" hinzugefügt.
--------------------------------------------------------------------
Die Inserts werden eigentlich korrekt ausgegeben, nur werden sie in der TabelleAnwendungssysteme nicht gespeichert :-(. Mein Code sieht nun folgendermaßen aus:
$kompo = "INSERT INTO komponente (ausbaustufe_anwendungslandschaft, typ, subtyp, beschreibung)"
."VALUES ('$ausbaustufe_anwendungslandschaft','$typ','$subtyp','$beschreibung')";
echo $kompo . "<br>";
mysql_query($kompo);
$last_id = mysql_insert_id();
$asystem = "INSERT INTO anwendungssystem (komp_oid, name, alter, monetaere_wirkung, strategische_wirkung, anz_benutzer, fachl_verantw, it_verantw, durchschnitt_conc_user, transaktionsrate, datenvolumen_persistent, wartungskosten, betriebskosten)"
."VALUES ('$last_id','$name','$alter','$monetaere_wirkung','$strategische_wirkung','$anz_benutzer','$fachl_verantw','$it_verantw','$durchschnitt_conc_user','$transaktionsrate','$datenvolumen_persistent','$wartungskosten','$betriebskosten')";
echo $asystem . "<br>";
mysql_query($asystem);
}
if (@mysql_query($asystem))
{
echo ("<p class=\"act\">Hinweis: Das Anwendungssystem \"$name\" wurde zur Datenbank Anwendungssystem hinzugefügt.<br><br><br></p>");
echo ("letzte ID: ");
echo $last_id;
}
else
{
echo ("<p class=\"act\">Fehler beim Hinzufügen des Anwendungssystems: " .mysql_error() . ".<br><br><br></p>");
echo ("letzte ID: ");
echo $last_id;
}
if (@mysql_query($kompo))
{
echo ("<p class=\"act\">Hinweis: Das Anwendungssystem \"$name\" wurde zur Komponente \"$typ\" hinzugefügt.<br><br><br></p>");
}
else
{
echo ("<p class=\"act\">Fehler beim Hinzufügen der Komponente: " .mysql_error() . ".<br><br><br></p>");
}
Antwort 16 von semi
Könnte an den Hochkommas liegen.
Entferne alle Hochkommas bei nummerischen Spalten wie alter, anz_benutzer etc. Lass sie nur bei Spalten, die Strings erwarten (z.B. fachl_verantw, it_verantw).
Ist das Absicht, dass die Abfragen jeweils zwei mal ausgeführt werden? (Auch noch in unterschiedlicher Reihenfolge).
Ansonsten sieht es auf den ersten Blick OK aus.
Entferne alle Hochkommas bei nummerischen Spalten wie alter, anz_benutzer etc. Lass sie nur bei Spalten, die Strings erwarten (z.B. fachl_verantw, it_verantw).
Ist das Absicht, dass die Abfragen jeweils zwei mal ausgeführt werden? (Auch noch in unterschiedlicher Reihenfolge).
Ansonsten sieht es auf den ersten Blick OK aus.
Antwort 17 von semi
Ich hab's. :)
alter ist ein reserviertes Wort in SQL. Benenne die Spalte um, in z.B. as_alter.
Anlegen einer Spalte mit diesem Namen klappt. Irgendwelche Aktionen wie SELECT, UPDATE, INSERT etc. liefert aber Fehler.
Ziemlich doof sowas, meinst Du nicht?
alter ist ein reserviertes Wort in SQL. Benenne die Spalte um, in z.B. as_alter.
Anlegen einer Spalte mit diesem Namen klappt. Irgendwelche Aktionen wie SELECT, UPDATE, INSERT etc. liefert aber Fehler.
Ziemlich doof sowas, meinst Du nicht?
Antwort 18 von semi
Alternativ kannst Du Hochkomma in dem Spaltennamen setzen.
INSERT INTO anwendungssystem (komp_oid, name, `alter`, monetaere_wirkung, ...
INSERT INTO anwendungssystem (komp_oid, name, `alter`, monetaere_wirkung, ...
Antwort 19 von Anja77
Oh neeee, darauf wäre ich ja nie gekommen. Du bist mein Held!!!!!!!!!!!!!!! Wie kann ich das jemals wieder gut machen? Vielen vielen Dank!!!
Ist noch nicht 100 pro, weil er jetzt alles doppelt (2x) in die DB (in beide Tabellen doppelt) einträgt, aber da werfe ich morgen (ach ne, heute Mittag) noch mal nen Blick drauf :-))).
Vielen Dank noch mal!!!!
Gruß, Anja
Ist noch nicht 100 pro, weil er jetzt alles doppelt (2x) in die DB (in beide Tabellen doppelt) einträgt, aber da werfe ich morgen (ach ne, heute Mittag) noch mal nen Blick drauf :-))).
Vielen Dank noch mal!!!!
Gruß, Anja
Antwort 20 von Anja77
Habs rausgefunden, woran der Doppeleintrag lag. Ich habe diese beiden Zeilen rausgenommen und jetzt ist alles perfekt :-))):
Vielen Dank noch mal an Michael!!!!!!!!
Gruß, Anja
mysql_query($kompo)
.....
mysql_query($asystem);
Vielen Dank noch mal an Michael!!!!!!!!
Gruß, Anja
Antwort 21 von Anja77
Ich war wohl etwas vorschnell, scheint anscheinend nur einmal zu funktionieren :-(((, denn jetzt erzeugt er mir wieder eine "0", wenn ich die an Antwort 20 geposteten Zeilen auskommentiere :-(((.
Ich werde weiter probieren und mich melden, wenn ich was erreicht habe.
Anja
Ich werde weiter probieren und mich melden, wenn ich was erreicht habe.
Anja
Antwort 22 von Anja77
OK, hab nun folgendes herausgefunden, wenn ich das mache:
Dann wird in Tabelle Anwendungssystem korrekt eingetragen (auch mit richtiger ID von Tab. komponente) und in Tabelle Komponente erfolgt ein doppelter Eintrag, aber mit unterschiedlicher ID.
Wenn ich das mache:
dann funktioniert das mit dem mysql_insert_id() wieder nicht, dass heist ich bekomme eine "0" geliefert, aber die Einträge stimmen, also in jeder Tabelle ein Eintrag!
Kann mich vielleicht jemand auf die richtige Spur bringen???
Danke, Anja
.....
//mysql_query($kompo)
.....
mysql_query($asystem);
...
Dann wird in Tabelle Anwendungssystem korrekt eingetragen (auch mit richtiger ID von Tab. komponente) und in Tabelle Komponente erfolgt ein doppelter Eintrag, aber mit unterschiedlicher ID.
Wenn ich das mache:
.....
//mysql_query($kompo)
.....
//mysql_query($asystem);
...
dann funktioniert das mit dem mysql_insert_id() wieder nicht, dass heist ich bekomme eine "0" geliefert, aber die Einträge stimmen, also in jeder Tabelle ein Eintrag!
Kann mich vielleicht jemand auf die richtige Spur bringen???
Danke, Anja
Antwort 23 von Anja77
Hat sich ein Fehler eingeschlichen in Antwort 22. Der erste Codeabschnitt sieht so aus:
.....
mysql_query($kompo)
.....
//mysql_query($asystem);
...
Antwort 24 von Anja77
Also wenn ich das so schreibe, dann wird alles richtig in die beiden Tabellen eingetragen, aber ich erhalte trotzdem eine Fehlermeldung.
Die Fehlermeldung ist folgende:
------------------------------------------------------------------------------
Fehler beim Hinzufügen der Komponente: You have an error in your SQL syntax near '1' at line 1.
Hinweis: Das Anwendungssystem "test" wurde zur Datenbank Anwendungssystem hinzugefügt.
letzte ID: 118
------------------------------------------------------------------------------
Ist sicher nur noch ein kleiner Fehler, aber wo ist er????
Anja
$kompo = mysql_query("INSERT INTO komponente (ausbaustufe_anwendungslandschaft, typ, subtyp, beschreibung)"
."VALUES ('$ausbaustufe_anwendungslandschaft','$typ','$subtyp','$beschreibung')");
$last_id = mysql_insert_id();
$asystem = "INSERT INTO anwendungssystem (komp_oid, name, aws_alter, monetaere_wirkung, strategische_wirkung, anz_benutzer, "
."fachl_verantw, it_verantw, durchschnitt_conc_user, transaktionsrate, datenvolumen_persistent, wartungskosten, betriebskosten)"
."VALUES ('$last_id','$name','$aws_alter','$monetaere_wirkung','$strategische_wirkung','$anz_benutzer','$fachl_verantw',"
."'$it_verantw','$durchschnitt_conc_user','$transaktionsrate','$datenvolumen_persistent','$wartungskosten','$betriebskosten')";
Die Fehlermeldung ist folgende:
------------------------------------------------------------------------------
Fehler beim Hinzufügen der Komponente: You have an error in your SQL syntax near '1' at line 1.
Hinweis: Das Anwendungssystem "test" wurde zur Datenbank Anwendungssystem hinzugefügt.
letzte ID: 118
------------------------------------------------------------------------------
Ist sicher nur noch ein kleiner Fehler, aber wo ist er????
Anja
Antwort 25 von Anja77
Keiner einen Tipp??
:-((((
:-((((
Antwort 26 von semi
Sorry, ich erkenne keinen Fehler mehr.
Teste die Anweisung in mySQL-Front und wenn sie OK ist, dann gebe sie auch mit echo aus. Vielleicht ist eine der Variablen leer.
Teste die Anweisung in mySQL-Front und wenn sie OK ist, dann gebe sie auch mit echo aus. Vielleicht ist eine der Variablen leer.
Antwort 27 von Anja77
Hm, also ich hab den Clienten installiert, aber weiss nicht so recht, was er mir bringen soll, denn ich denke, dass an meinem php-Code was falsch sein wird und nicht an der Tabelle. Ich habe nicht gesehen, dass man das damit testen könnte, wird man bestimmt auch nicht können, oder?
Habe auch mit echo ausgegeben und erhalte folgende (Code siehe Antwort 24) Meldung beim klicken auf meinen Button:
-------------------------------------------------------------------------------------
Tab. Komponente: 1
Tab. Anwendungssystem: INSERT INTO anwendungssystem (komp_oid, name, aws_alter, monetaere_wirkung, strategische_wirkung, anz_benutzer, fachl_verantw, it_verantw, durchschnitt_conc_user, transaktionsrate, datenvolumen_persistent, wartungskosten, betriebskosten)VALUES ('141','market','77','2','5','','','','','','','','')
Fehler beim Hinzufügen der Komponente: You have an error in your SQL syntax near '1' at line 1.
Hinweis: Das Anwendungssystem "market" wurde zur Datenbank Anwendungssystem hinzugefügt.
letzte ID: 141
-------------------------------------------------------------------------------------
Das komische ist, wie schon gesagt, dass er in die Tabelle alles so einfügt, wie ichs haben will, obwohl er sagt, da ist nen Fehler. Ich sehe ja, dass meine Variable $kompo ne 1 ausgibt, aber es wird trotzdem alles richtig eingetragen.
Noch ne Idee? Oder nen Hinweis für den Clienten??
Danke, Anja
Habe auch mit echo ausgegeben und erhalte folgende (Code siehe Antwort 24) Meldung beim klicken auf meinen Button:
-------------------------------------------------------------------------------------
Tab. Komponente: 1
Tab. Anwendungssystem: INSERT INTO anwendungssystem (komp_oid, name, aws_alter, monetaere_wirkung, strategische_wirkung, anz_benutzer, fachl_verantw, it_verantw, durchschnitt_conc_user, transaktionsrate, datenvolumen_persistent, wartungskosten, betriebskosten)VALUES ('141','market','77','2','5','','','','','','','','')
Fehler beim Hinzufügen der Komponente: You have an error in your SQL syntax near '1' at line 1.
Hinweis: Das Anwendungssystem "market" wurde zur Datenbank Anwendungssystem hinzugefügt.
letzte ID: 141
-------------------------------------------------------------------------------------
Das komische ist, wie schon gesagt, dass er in die Tabelle alles so einfügt, wie ichs haben will, obwohl er sagt, da ist nen Fehler. Ich sehe ja, dass meine Variable $kompo ne 1 ausgibt, aber es wird trotzdem alles richtig eingetragen.
Noch ne Idee? Oder nen Hinweis für den Clienten??
Danke, Anja
Antwort 28 von semi
VALUES ('141','market','77','2','5','','','','','','','','')
Das sind sicherlich die Hochkommas ohne Wert in nummerischen Feldern. Oder sogar ein "NOT NULL"-Feld.
Das mit dem mySQL-Front ist nur ein Vorschlag. Wenn Du SQL-Anweisungen damit testest, dann kannst Du später mit Sicherheit sagen "An der SQL-Anweisung liegt es nicht". Dann bleiben nur noch Fehler in PHP. Das ist die übliche Vorgehensweise, zumindest solange man SQL nicht gut beherscht.
Auch wenn eine Anweisung ohne Fehlermeldungen ausgeführt wurde, heißt es nicht, dass sie das tut, was man haben möchte. Daher zuerst immer testen, testen, testen.
1) SQL Anweisungen mit typischen Werten testen
2) In PHP einbauen und mit echo ausgeben statt mit mysql_query auszuführen.
3) Wenn alle Werte dort sind, wo sie sollen, den DB Zugriff "scharf" machen.
Gruß,
Michael
Das sind sicherlich die Hochkommas ohne Wert in nummerischen Feldern. Oder sogar ein "NOT NULL"-Feld.
Das mit dem mySQL-Front ist nur ein Vorschlag. Wenn Du SQL-Anweisungen damit testest, dann kannst Du später mit Sicherheit sagen "An der SQL-Anweisung liegt es nicht". Dann bleiben nur noch Fehler in PHP. Das ist die übliche Vorgehensweise, zumindest solange man SQL nicht gut beherscht.
Auch wenn eine Anweisung ohne Fehlermeldungen ausgeführt wurde, heißt es nicht, dass sie das tut, was man haben möchte. Daher zuerst immer testen, testen, testen.
1) SQL Anweisungen mit typischen Werten testen
2) In PHP einbauen und mit echo ausgeben statt mit mysql_query auszuführen.
3) Wenn alle Werte dort sind, wo sie sollen, den DB Zugriff "scharf" machen.
Gruß,
Michael
Antwort 29 von Anja77
Kann mir nicht ganz erklären, dass es an diesen VALUES liegt, dann diese werden in die Tabelle Anwendungssystem eingetragen und da gibt er ja auch aus, dass richtig in die Tabelle eingefügt wurde. Das Problem liegt eher bei Tabelle Komponente, dann da gibt er ja mit echo ne 1 aus. Aber kann mir auch nicht ganz erklären, wo da der Fehler ist. Ich hab nun schon so viel getestet und finds nicht raus, aber ich bleibe dran ;-).
Werde mal sehen, ob ich mich mit dem Clienten zurechtfinde, hört sich ja eigentlich ganz gut an, Dein Vorschlag :-).
Danke, erst mal, Anja
Werde mal sehen, ob ich mich mit dem Clienten zurechtfinde, hört sich ja eigentlich ganz gut an, Dein Vorschlag :-).
Danke, erst mal, Anja

