Datensatz einlesen aus Formular (kompliziert)

Hallo ich habe folgendes Problem:

VEREINFACHT

  1. Datenbank

Kunden ID | Kundenname | Kundenadresse

Kunden ID ist ein autowert

  1. Datenbank

Kunden ID | Bestellung

Formular:

Kundenname | Kundenadresse | Bestellung

Also hierbei den Kunden in die DB1 einzulesen ist ja relativ leicht. Bloß wie komme ich an die Kunden ID anhand des Namens und der Adresse des Kundens und lese die mit der Bestellung in die DB2 ein?

Hier nochmal die CODES:

<?php
$vorname=$_REQUEST["vorname"] ;
$ort=$_REQUEST["ort"] ;
$nachname=$_REQUEST["nachname"] ;
$telefon=$_REQUEST["telefon"] ;
$artikelnr=$_REQUEST["artikelnr"] ;
$plz=$_REQUEST["plz"] ;
$straße=$_REQUEST["straße"] ;
$hausnr=$_REQUEST["hausnr"] ;
$menge=$_REQUEST["menge"] ;
$datum = date("d.m.Y H:i");

$db = @new mysqli( 'localhost', 'root', '', 'pizza');
if (mysqli_connect_errno() == 0)
         {
         $sql = 'INSERT INTO kunden (`Vorname`, `Nachname`, `PLZ`,`Ort`,`Straße`,`Hausnummer`,`TelefonNr`)VALUES
         ("'.$vorname.'", "'.$nachname.'", "'.$plz.'", "'.$ort.'", "'.$straße.'", "'.$hausnr.'", "'.$telefon.'")';

    $db->query( $sql );

    if ($db->affected_rows==1)
    {
         echo 'Der neue Eintrage wurde hinzugefügt.';
    }else
        {
         echo 'Der Eintrag konnte nicht hinzugefügt werden.';
        }
   ;
}else{
         echo 'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: '
         .mysqli_connect_errno(). ' : ' .mysqli_connect_error();
}

$db->close();
 

Danke im Vorraus

Aaaaalso: zuerst einmal geht es in diesem Forum nicht um MySQL.
Hier geht es einzig und allein um PostgreSQL.

Wenn du zwei Datenbanken hast, brauchst du auch zwei Datenbankverbindungen.
Vielleicht solltest du auch noch einen ev. auftretenden Fehler in deiner query() Methode abfangen.
Und wenn ich sehe, wie dein Stück Code anfällig für SQL.Injections ist, wird mir schlecht.

jagut dass die anfällig is hab ich mir schon gedacht, da die db auch noch kein pw hat… habe auch erst mit sql angefangen… aber die datenbank is auch nur als übung gedacht…
also die 2. datenbankverbindung sieht bei mir wie folgt aus … jedoch ist die 1. variable im insert leer weil ich halt net weiß wie man an die Kunden_ID rankommt

[php]
$db = @new mysqli( ‘localhost’, ‘root’, ‘’, ‘pizza’);
if (mysqli_connect_errno() == 0)
{
$sql = ‘INSERT INTO bestellung (KundenNr, Bestellungsdatum, Artikelnummer,Menge)VALUES("’…’" , “’.$datum.’”, “’.$artikelnr.’”, “’.$menge.’”)’;

$db->query( $sql );

if ($db->affected_rows==1)
{
echo 'Der neue Eintrage wurde hinzugefügt. ';

}else
{
echo ‘Der Eintrag konnte nicht hinzugefügt werden.’;
}
;
}else{
echo 'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: ’
.mysqli_connect_errno(). ’ : ’ .mysqli_connect_error();
}

$db->close();
[/php]

weiß denn keiner wie man sowas machn kann?

Nicht für MySQL.
Und ehrlich gesagt ist hier auch kein PHP-Forum.

SQL-Injektion wehrt man nicht mit einem PW ab. Die in diesem Forum gültige Antwort auf Deine Frage ist entweder RETURNING oder lastval(). Und wenn Du eh erst anfängst, wäre es noch nicht zu spät, alles zu tun, damit Du hier in diesem Forum richtig bist.

Andreas

alles klar danke…
habe jetz aber eine lösung gefunden… :slight_smile:
is zwar bestimmt umständlich geht aber …

jedenfalls halbwegs:

<?php
$vorname=$_REQUEST["vorname"] ;
$ort=$_REQUEST["ort"] ;
$nachname=$_REQUEST["nachname"] ;
$telefon=$_REQUEST["telefon"] ;
$artikelnr=$_REQUEST["artikelnr"] ;
$plz=$_REQUEST["plz"] ;
$straße=$_REQUEST["straße"] ;
$hausnr=$_REQUEST["hausnr"] ;
$menge=$_REQUEST["menge"] ;
$datum = date("d.m.Y H:i");

// KUNDEN HINZUFÜGEN //

$db = @new mysqli( 'localhost', 'root', '', 'pizza');
if (mysqli_connect_errno() == 0)
         {
         $sql = 'INSERT INTO kunden (`Vorname`, `Nachname`, `PLZ`,`Ort`,`Straße`,`Hausnummer`,`TelefonNr`)VALUES
         ("'.$vorname.'", "'.$nachname.'", "'.$plz.'", "'.$ort.'", "'.$straße.'", "'.$hausnr.'", "'.$telefon.'")';

    $db->query( $sql );

    if ($db->affected_rows==1)
    {
         echo 'Der neue Eintrage wurde hinzugefügt.';
    }else
        {
         echo 'Der Eintrag konnte nicht hinzugefügt werden.';
        }
   ;
}else{
         echo 'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: '
         .mysqli_connect_errno(). ' : ' .mysqli_connect_error();
}

$db->close();

//ABFRAGE KUNDEN_ID//

$db = @new mysqli( 'localhost', 'root', '', 'pizza');
if (mysqli_connect_errno() == 0)
         {

         // Query vorbereiten und an die DB schicken
         $sql = 'SELECT `Kunden_Nr` FROM `Kunden` WHERE `Hausnummer`= '.$hausnr.' and `PLZ`='.$plz.'';
         $ergebnis = $db->query( $sql );
         // Anzahl gefunde Datensaetze ausgeben
         echo "<p>Sie besitzten " .$ergebnis->num_rows. " Artikel.</p>";
         // Ergebnisse ausgeben
         while ($zeile = $ergebnis->fetch_object())
         {
         $po=$zeile->Kunden_Nr    ;
         }
         // Resourcen freigeben
         $ergebnis->close();
}else{
echo 'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: '
.mysqli_connect_errno(). ' : ' .mysqli_connect_error();
}
$db->close();

// BESTELLUNG HINZUFÜGEN //

$db = @new mysqli( 'localhost', 'root', '', 'pizza');
if (mysqli_connect_errno() == 0)
         {
         $sql = 'INSERT INTO bestellung (`KundenNr`, `Bestellungsdatum`, `Artikelnummer`,`Menge`)VALUES("'.$po.'", "'.$datum.'", "'.$artikelnr.'", "'.$menge.'")';

    $db->query( $sql );

    if ($db->affected_rows==1)
    {
         echo 'Der neue Eintrage wurde hinzugefügt. ';

    }else
        {
         echo 'Der Eintrag konnte nicht hinzugefügt werden.';
        }
   ;
}else{
         echo 'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: '
         .mysqli_connect_errno(). ' : ' .mysqli_connect_error();
}

$db->close();

?>

jetz hab ich nurnoch das problem dass ich immer die fehlermeldung:

Notice: Trying to get property of non-object in \pfad on line 107

Fatal error: Call to a member function fetch_array() on a non-object in \pfad on line 109

also diese zeilen:

echo "<p>Sie besitzten " .$ergebnis->num_rows. " Artikel.</p>";
         // Ergebnisse ausgeben
         while ($zeile = $ergebnis->fetch_object()) 

Aber der fehler tritt nur auf sobald die felder buchstaben enthalten bei zahlen gehts wunderbar

villeicht weiß einer ja was

Wie gesagt: in diesem Forum geht’s weder um MySQL noch um PHP.