Ich habe eine Frage: "Daten in eine andere Tabelle einfügen, aber dieselbe ID (auto_increment) haben"
Dies ist mein zweimaliger Tisch
Student
----------------------
id | Name | Klasse |
----------------------
Punktzahl
-----------------------------------------
id | Mathe | englisch | physisch | Jahr |
-----------------------------------------
Ich habe einige Daten wie:
John, A, 90, 80, 70, 2015
John, A, 70, 90, 50, 2016
Ich möchte Ergebnis wie:
Student
----------------------
id | Name | Klasse |
----------------------
1 | John | A |
----------------------
Punktzahl
-----------------------------------------
id | Mathe | englisch | physisch | Jahr |
-----------------------------------------1 | 90 | 80 | 70 | 2015
1 | 70 | 90 | 50 | 2016
Da die Tabelle der "ID" des Schülers Auto_increment verwendet
Wenn ich möchte, dass die Tabelle beim Einfügen von Daten zweimal dieselbe ID hat
Welches SQL kann ich verwenden?
(Ich denke, mysql_insert_id()
ist eine Lösung, aber nicht sicher ...)
Danke Hilfe !!
2 Antworten
Ich hoffe, Sie suchen nach der Abfrage, um dies zu tun. Verwenden Sie zuerst PDO oder mysqli für die Interaktion mit der Datenbank. Hier verwende ich PDO.
function my_select($query)
{
global $dbserver,$dbuser,$dbpwd,$dbname;
$dbh= new PDO('mysql:host='.$dbserver.';dbname='.$dbname.'',$dbuser,$dbpwd);
$rs=$dbh->prepare($query); //prepared statements have numerous advantages over executing sql statements directly
$rs->execute();
return $db->lastInsertId(); //returns last inserted id of current db connection
}
Und die Abfrage kann sein,
$l_id=my_select(query1) // query to insert into student
$query2="INSERT INTO score (id,...) VALUES ('".$l_id."',...)" ;
my_select(query2);
Wenn Sie in beiden Tabellen die Auto Increment-ID verwenden, müssen Sie eine Spalte in der Tabelle score
als Referenz für studentid
hinzufügen. Zum Beispiel:
Insert into student (name) values ('test');
Als Verwendung:
mysql_insert_id();
Zuletzt Daten in die Punktetabelle einfügen:
Insert into score (yourcolumns, studentid) values (yourcolumnvalue, last_inserted_id);
Randnotiz: anstelle von mysql_*
Funktionen verwenden mysqli_*
oder PDO, da mysql_*
veraltet und in PHP 7 nicht verfügbar ist.
Neue Fragen
mysql
MySQL ist ein kostenloses Open-Source-RDBMS (Relational Database Management System), das SQL (Structured Query Language) verwendet. Verwenden Sie dieses Tag NICHT für andere DBs wie SQL Server, SQLite usw. Dies sind verschiedene DBs, die alle ihre eigenen SQL-Dialekte verwenden, um die Daten zu verwalten.