INSERT query nodig, iemand er verstand van?
de query hieronder is fout zoals jullie zelf ook wel zien, maar ik zou niet weten hoe ik het wel goed kan doen.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
$insertCheck = "INSERT INTO companies
VALUES ('',
'" . stripslashes(mysql_real_escape_string($_POST['rm_id'])) . "',
'" . stripslashes(mysql_real_escape_string($_POST['c_name'])) . "',
0 );";
$insertLinkbuilding = "INSERT INTO linkbuilding
VALUES ('(SELECT MAX(c_id) FROM companies LIMIT 1)',
'YEAR(NOW())');";
VALUES ('',
'" . stripslashes(mysql_real_escape_string($_POST['rm_id'])) . "',
'" . stripslashes(mysql_real_escape_string($_POST['c_name'])) . "',
0 );";
$insertLinkbuilding = "INSERT INTO linkbuilding
VALUES ('(SELECT MAX(c_id) FROM companies LIMIT 1)',
'YEAR(NOW())');";
Bij voorbaat dank :)
Zodra je de eerste insert hebt gedaan, gebruik je dat id voor de 2e insert.
Dat gaat automatisch. De MySQL database zal zelf het laatst gegenereerde id binnen dezelfde connectie gebruiken. Als je er dus geen andere query tussen draait gaat het goed.
Code (php)
1
2
3
4
2
3
4
INSERT INTO foo (auto,text)
VALUES(NULL,'text'); # generate ID by inserting NULL
INSERT INTO foo2 (id,text)
VALUES(LAST_INSERT_ID(),'text'); # use ID in second table
VALUES(NULL,'text'); # generate ID by inserting NULL
INSERT INTO foo2 (id,text)
VALUES(LAST_INSERT_ID(),'text'); # use ID in second table
Gewijzigd op 25/04/2014 15:09:19 door Michael -
En wat nou als toevallig 2 personen op andere computers tegelijkertijd een bedrijf toevoegen? gaat de database zich dan niet verwarren met elkaar?
Dat zijn verschillende connecties, dus dat maakt niets uit. Een database gaat niets 'verwarren' met elkaar.
Toevoeging op 25/04/2014 16:13:51:
Ik dacht dat het probleem nu wel helemaal opgelost zou zijn, maar toen ik het form af maakte en hem teste deed hij het niet...
ziet iemand hier een fout in?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$insertCheck = "INSERT INTO companies
(c_id,
rm_id,
c_name,
c_invisibility)
VALUES (NULL,
'" . stripslashes(mysql_real_escape_string($_POST['rm_id'])) . "',
'" . stripslashes(mysql_real_escape_string($_POST['c_name'])) . "',
'0');";
$insertLinkbuilding = "INSERT INTO linkbuilding
(c_id,
y_id)
VALUES (LAST_INSERT_ID(),
YEAR(NOW()));";
$queryInsert = mysql_query($insertCheck && $insertLinkbuilding); <--zelf denk ik hier
?>
$insertCheck = "INSERT INTO companies
(c_id,
rm_id,
c_name,
c_invisibility)
VALUES (NULL,
'" . stripslashes(mysql_real_escape_string($_POST['rm_id'])) . "',
'" . stripslashes(mysql_real_escape_string($_POST['c_name'])) . "',
'0');";
$insertLinkbuilding = "INSERT INTO linkbuilding
(c_id,
y_id)
VALUES (LAST_INSERT_ID(),
YEAR(NOW()));";
$queryInsert = mysql_query($insertCheck && $insertLinkbuilding); <--zelf denk ik hier
?>
Met de mysql_query() functie kun je slechts één (insert) query tegelijk meegeven.
Kijk eens naar http://www.php.net/manual/en/mysqli.quickstart.multiple-statement.php
Deze functie kan meerdere queries verwerken maar die moet je dan wel als één string meegeven.
Het werkt wel met mysqli_ functies en niet met mysql_ functies. Dit is tevens beter omdat mysql_ er langzaam uitgaat. Je moet dan alle mysql_ functies omzetten naar mysqli_ dus ook de mysql_connect functie bijvoorbeeld.
De (volgorde van) de parameters die je aan de functies meegeeft wijkt soms enigzins af van de mysql_ functies.