• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage zu mysql_insert_ID()

Andreas200

Neues Mitglied
Hallo Zusammen,

Ich möchte Daten aus einem Formular in zwei Tabellen (personen[pnr, name, vorname, geburtstag], anschrift[aid, pnr, strasse, plz, ort]) eintragen.
Die in personen erzeugte "pnr" (auto_increment) sollte mit mysql_insert_id() in der Tabelle anschrift "pnr" eingetragen werden, kriegs aber nicht hin.
Wär nett wenn mir jemand helfen könnte, anbei der Code:

Danke im voraus Andreas

PHP:
if (isset($_POST["senden"]))
{
    include("einstellung.php");
    $sp="insert into personen values";
    $sp.="('" . $_POST["nachn"] . "',";
    $sp.="'" . $_POST["vorn"] . "',";
    $sp.="'" . $_POST["gdat"] . "')";
    $id = mysql_insert_ID();
    $sp="insert into anschrift values";
    $sp.="('" . $_POST["pnr"]=$id. "',";
    $sp.="'" . $_POST["strasse"] . "',";
    $sp.="'" . $_POST["plz"] . "',";
    $sp.="'" . $_POST["ort"] . "')";
    mysql_query($sp);

    $num=mysql_affected_rows();
if ($num>0)
{
    echo "<font color='#00aa00'>";
    echo "Es wurde 1 Datensatz hinzugefügt<p>";
    echo "</font>";
}
else
{
    echo "<font color='#ff0000'>";
    echo "Es ist ein Fehler aufgetreten,<br>";
    echo "es wurde kein Datensatz hinzugefügt<p>";
    echo "</font><p>";
}
    mysql_close();
}
 
Die pnr (auto-increment) bekommst Du erst nach erfolgreichem INSERT. Und so wie Dein Script aussieht, hast Du schlichtweg vergessen, das INSERT auszuführen.

Gruß thuemmy

PS. Die Funktion mysql_insert_ID gibt es nicht, aber es gibt mysql_insert_id
 
Danke erstmal das es überhaupt jemand gelesen hat !
Ich hatte aber darauf gehofft das vielleicht jemand einen Fehler in obigen Code findet.

Andreas
 
Dann hast Du mein erstes Post nicht richtig durchgelesen. Der Fehler ist der, dass Du
PHP:
$id=mysql_insert_id();
ausführst, ohne vorher ein INSERT gemacht zu haben.

Aber nochmal im Detail
PHP:
if (isset($_POST["senden"]))
{
    include("einstellung.php");
    $sp="insert into personen values";
    $sp.="('" . $_POST["nachn"] . "',";
    $sp.="'" . $_POST["vorn"] . "',";
    $sp.="'" . $_POST["gdat"] . "')";
    mysql_query($sp);
    $id = mysql_insert_ID();
    $sp="insert into anschrift values";
    $sp.="('" . $_POST["pnr"]=$id. "',";
    $sp.="'" . $_POST["strasse"] . "',";
    $sp.="'" . $_POST["plz"] . "',";
    $sp.="'" . $_POST["ort"] . "')";
    mysql_query($sp);

    $num=mysql_affected_rows();
if ($num>0)
{
    echo "<font color='#00aa00'>";
    echo "Es wurde 1 Datensatz hinzugefügt<p>";
    echo "</font>";
}
else
{
    echo "<font color='#ff0000'>";
    echo "Es ist ein Fehler aufgetreten,<br>";
    echo "es wurde kein Datensatz hinzugefügt<p>";
    echo "</font><p>";
}
    mysql_close();
}

Ich hoffe, Du hast es diesmal verstanden.

Gruß thuemmy
 
Hallo thuemmy,

Danke für Deine Hilfe, funzt aber leider nicht.
Muß mal schauen ob ich wo anders einen Fehler drin habe.

Gurß Andreas
 
mysql_insert_id()

Ich bekomme keine Fehlermeldung. Der Datensatz wird nicht in die Tabellen eingetragen hab mal das gesamte Formular mitgeschickt.
Mit LAST_INSERT hab ich gleich gar keine Kennung. Hatte es mal versucht, bekam aber eine Fehlermeldung das es PHP unbekannt ist.

PHP:
<html>
<head>
<?php
if (isset($_POST["senden"]))
{
    include("einstellung.php");
    $sp="insert into personen values";
    $sp.="('" . $_POST["nachn"] . "',";
    $sp.="'" . $_POST["vorn"] . "',";
    $sp.="'" . $_POST["gdat"] . "')";
    mysql_query($sp);
    $id=mysql_insert_id();
    $sp="insert into anschrift values";
    $sp.="('" . $_POST["pnr"]=$id . "',";
    $sp.="'" . $_POST["strasse"] . "',";
    $sp.="'" . $_POST["plz"] . "',";
    $sp.="'" . $_POST["ort"] . "')";
    mysql_query($sp);

    $num=mysql_affected_rows();
if ($num>0)
{
    echo "<font color='#00aa00'>";
    echo "Es wurde 1 Datensatz hinzugefügt<p>";
    echo "</font>";
}
else
{
    echo "<font color='#ff0000'>";
    echo "Es ist ein Fehler aufgetreten,<br>";
    echo "es wurde kein Datensatz hinzugefügt<p>";
    echo "</font><p>";
}
    mysql_close();

}


?>
</head>
<body>
Fülle alle Felder aus und<br/> sende das Formular ab<p>
<form action="" method="post">

<input type="text" name="nachn" />  Name<p>
<input type="text" name="vorn" />  Vorname<p>
<input type="text" name="gdat" />  Geb.Datum  <p>
<input type="text" name="strasse" />  Straße<p>
<input type="text" name="plz" />  PLZ<p>
<input type="text" name="ort" />  Ort<p>
<input type="submit" name="senden" value="Speichern">

  <input type="reset" />
 </form>

<p>Weiter zur <a href='pers_anz.php'>Liste
 
Schon geprüft, ob deine Queries überhaupt Erfolg haben?

Du solltest deine $_POST-Daten anständig escapen und die Felder im INSERT genau angeben, wenn du nämlich mal etwas ändert funktioniert die Query sonst einfach nicht mehr.

Mal HTML und CSS (Trennung von Inhalt und Layout) zu lernen wäre auch mal angebracht.
 
Ich bekomme keine Fehlermeldung. Der Datensatz wird nicht in die Tabellen eingetragen
Dann geht Dein mysql_query() nicht. Lass Dir da halt mal die Fehlermeldung ausgeben.
Code:
mysql_query(...) or die(mysql_error());
Wenn man keine Fehlermeldung ausgibt, wird natürlich auch keine angezeigt.
Und wenn kein Eintrag in die DB gemacht wird, kann das nicht am mysql_insert_id() liegen, das würde bestenfalls eine falsche id zurückliefern und das nachfolgende insert eine falsche $id in die DB eintragen.

Debugging lernen wäre auch nicht verkehrt...
 
Ein letztes Hallo,

Erstmal Dank an Alle, werde mich bemühen Eure Ratschläge zu beherzigen.
Es funktioniert jetzt. Und damit ich nichts falsches schreibe schicke ich lieber den Code noch einmal.

Gruß Andreas


PHP:
if (isset($_POST["senden"]))
{
    include("einstellung.php");
    $sp="insert into personen values";
    $sp.="('" . $_POST["nachn"] . "',";
    $sp.="'" . $_POST["vorn"] . "',";
    $sp.="'" . $_POST["pnr"] . "',";    // habe das
    $sp.="'" . $_POST["gdat"] . "')";
    mysql_query($sp);
    $id=mysql_insert_id();
    $sp="insert into anschrift values";
    $sp.="('" . $_POST["aid"] . "',";    // und das eingefügt, sind die Primärschlüsselfelder
    $sp.="'" . $_POST["pnr"]=$id . "',";
    $sp.="'" . $_POST["strasse"] . "',";
    $sp.="'" . $_POST["plz"] . "',";
    $sp.="'" . $_POST["ort"] . "')";
    mysql_query($sp);

    $num=mysql_affected_rows();
if ($num>0)
{
    echo "<font color='#00aa00'>";
    echo "Es wurde 1 Datensatz hinzugefügt<p>";
    echo "</font>";
}
else
{
    echo "<font color='#ff0000'>";
    echo "Es ist ein Fehler aufgetreten,<br>";
    echo "es wurde kein Datensatz hinzugefügt<p>";
    echo "</font><p>";
}
    mysql_close();

}
 
PHP:
if (isset($_POST["senden"]))
{
    include("einstellung.php");
    $sp="insert into personen values";
    $sp.="('" . $POST["nachn"] . "',";
    $sp.="'" . $POST["vorn"] . "',";
    $sp.="'" . $_POST["gdat"] . "')";
    $id = mysql_insert_ID(); 
{
else
}
    $sp="insert into anschrift values";
    $sp.="('" . $_POST["pnr"]=$id. "',";
    $sp.="'" . $_POST["strasse"] . "',";
    $sp.="'" . $_POST["plz"] . "',";
    $sp.="'" . $_POST["ort"] . "')";
    mysql_query($sp);
 
    $num=mysql_affected_rows();
if ($num>0)
{
    echo "<font color='#00aa00'>";
    echo "Es wurde 1 Datensatz hinzugefügt<p>";
    echo "</font>";
}
else
{
    echo "<font color='#ff0000'>";
    echo "Es ist ein Fehler aufgetreten,<br>";
    echo "es wurde kein Datensatz hinzugefügt<p>";
    echo "</font><p>";
}
else
    mysql_close();
}
icon4.gif
=achtung

so ist es fast richtig 1 fehler hab ich dir gelassen ...:)

mfg
vini-boy
 
na dann versuch' mal, superglobale klein zu schreiben oder groß-/kleinschreibung in variablen zu mixen.

PHP ist case sensitiv und das nicht nur im bereich variablen.

Nils aka XraYSoLo
Stimmt, ist Quatsch. Man muss sagen was genau case-senitive ist: Methoden, Funktionen, Eigenschaften etc.
 
Zurück
Oben