Bei Neuanlegung eines DS soll ID in eine weitere Tabelle übertragen werden

Die hatte ebenfalls nicht funktioniert. Wollte dann mal die andere Version testen. Leider auch ohne Erfolg.

PHP:
$sql="INSERT INTO tbl_kunden (kd_name, kd_vorname)
VALUES
('$_POST[kd_name]','$_POST[kd_vorname])"; //dieser Schritt klappt Wunderbar. Es wird auch eine neue Kundennummer vergeben.

$id = mysql_insert_id(); 

$sql_id="INSERT INTO tbl_preise (kd_preis_nr) SELECT kd_nr FROM tbl_kunden VALUES kd_nr = " .$id; 
mysql_query($sql_id); //Klappt weder so noch so: $sql_id = "INSERT INTO tbl_2 (kd_preis_nr) VALUES (" .$id.")"; 

if (!mysql_query($sql))
  {
  die('Error: ' . mysql_error());
  }
 
Du führst die erste Anweisung ja auch nicht aus, somit bekommst du auch keinen Wert für $id.

Was du auch entweder wieder gelöscht oder erst gar nicht verwendet hast, ist mysql_real_escape_string. Gibt es dafür einen besonderen Grund?
 
$sql_id="INSERT INTO tbl_preise (kd_preis_nr) SELECT kd_nr FROM tbl_kunden VALUES kd_nr = " .$id;
mysql_query($sql_id); //Klappt weder so noch so: $sql_id = "INSERT INTO tbl_2 (kd_preis_nr) VALUES (" .$id.")";

tbl_2 vs tbl_preise ? gibt's denn tbl_2 überhaupt oder doch nur tbl_preise?

und klar, erst $sql Ausführen, dann gibts die $id und anschliessend kommt dann $sql_id dran...
 
Zuletzt bearbeitet:
Inwiefern wird die erste Anweisung nicht ausgeführt?

Nun legt er mir die Datensätze doppelt an...aber die ID wird nach wie vor nict übertragen

PHP:
$sql="INSERT INTO tbl_kunden (kd_name, kd_vorname )
VALUES 
('" .mysql_real_escape_string($_POST['kd_name']) ."',
'" .mysql_real_escape_string($_POST['kd_vorname']) ."')";
mysql_query($sql); 

$id = mysql_insert_id(); 

$sql_id="INSERT INTO tbl_preise (kd_preis_nr) VALUES (" .$id.")";  
mysql_query($sql_id);
 
Inwiefern wird die erste Anweisung nicht ausgeführt?
Ganz einfach weil du hie nur die SQL-Anweisung erstellst aber nicht mit mysql_query ausführst:

PHP:
$sql="INSERT INTO tbl_kunden (kd_name, kd_vorname)
VALUES
('$_POST[kd_name]','$_POST[kd_vorname])"; //dieser Schritt klappt Wunderbar. Es wird auch eine neue Kundennummer vergeben.

$id = mysql_insert_id();

Zumindest gehe ich davon aus das dies der Code ist mit dem du arbeitest!? Auch wenn du jetzt plötzlich wieder etwas daran geändert hast.
 
wenn du nur mal das $sql ausführst und die $id abfüllst und mal als text anzeigst, kommt da was? nicht das $id leer ist. gibt es zudem irgendwelche constraints auf den tabellen?
 
Da du in den Codeabschnitten die du gepostet hast auch mal die Tabellennamen durcheinander gebracht hast (die Feldbezeichnungen eventuell auch) solltest du das alles mal kontrollieren.

Es würde sicher auch helfen wenn du die die SQL-Anweisungen mit echo am Bildschirm anzeigen lässt und das dann mit phpMyAdmin o.ä. testest. Dort erhältst du dann eventuell eine Fehlermeldung die dir weiterhilft.
 
So ich gleich nochmal.

Habe bei mir jetzt eine Datenbank mit der Tabelle "tbl_kunden" und Tabelle "tbl_preise" angelegt.

Die Tabelle "tbl_kunden" hat folgende Felder:

kd_nr - BIG INT - AUTOINCREMENT - PRIMARY KEY
kd_name - VARCHAR
kd_vorname - VARCHAR


Die Tabelle "tbl_preise" hat nur ein Feld:

kd_preis_nr - BIG INT

Wenn ich dann folgende Code ausführe, wird in beiden Tabellen der entsprechende Eintrag gemacht:

PHP:
<?php
//*************************************
// diese Angaben sind natürlich noch zu machen
$host = "";
$daba = "";
$user = "";
$pass = "";
//*************************************
$db = mysql_connect($host, $user, $pass);
mysql_select_db($daba, $db);

$sql = "INSERT INTO tbl_kunden (kd_name, kd_vorname) VALUES ('" .mysql_real_escape_string($_POST['kd_name']) ."','" .mysql_real_escape_string($_POST['kd_vorname']) ."')";
echo $sql;
echo "<br />";
mysql_query($sql);

$id = mysql_insert_id();
echo $id;
echo "<br />";

$sql_id = "INSERT INTO tbl_preise (kd_preis_nr) VALUES ('" .$id ."')";
echo $sql_id;
mysql_query($sql_id);
?>

Ich tippe darauf das du - wie schon geschrieben - einen Fehler bei den Tabellen- oder Feldnamen drin hast.
 
Zurück