INSERT query nodig, iemand er verstand van?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Racoon smasher

racoon smasher

25/04/2014 14:44:56
Quote Anchor link
Ik ben bezig met een php form waar een bedrijf moet worden toegevoegd, maar als die wordt toegevoegd, dan moet er ook meteen iets in een andere tabel worden gezet die zelfde id mee krijgt. c_id in companies heeft een autoincrement en in linkbuilding dus niet.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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())');";


Bij voorbaat dank :)
 
PHP hulp

PHP hulp

22/12/2024 08:49:15
 
Michael -

Michael -

25/04/2014 14:46:36
Quote Anchor link
Zoek eens naar 'last inserted id'.
Zodra je de eerste insert hebt gedaan, gebruik je dat id voor de 2e insert.
 
Racoon smasher

racoon smasher

25/04/2014 15:01:27
Quote Anchor link
Ik heb het een beetje uit lopen vogelen, maar bij de 2e query kent hij de row companies niet, hoe zorg ik ervoor dat die weet dat ik c_id uit companies bedoel?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
INSERT INTO companies VALUES ('', '7', 'TEST', '0' ); <--- werkt

INSERT INTO linkbuilding VALUES (LAST_INSERT_ID(companies), YEAR(NOW())); <--- deze niet
 
Erwin H

Erwin H

25/04/2014 15:07:13
Quote Anchor link
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.
 
Michael -

Michael -

25/04/2014 15:08:24
Quote Anchor link
Nee, companies komt ook niet voor in 'linkbuilding'.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
Gewijzigd op 25/04/2014 15:09:19 door Michael -
 
Racoon smasher

racoon smasher

25/04/2014 15:21:17
Quote Anchor link
En wat nou als toevallig 2 personen op andere computers tegelijkertijd een bedrijf toevoegen? gaat de database zich dan niet verwarren met elkaar?
 
Erwin H

Erwin H

25/04/2014 15:22:07
Quote Anchor link
Dat zijn verschillende connecties, dus dat maakt niets uit. Een database gaat niets 'verwarren' met elkaar.
 
Racoon smasher

racoon smasher

25/04/2014 15:31:35
Quote Anchor link
Bedankt allebei, het probleem is opgelost :)

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)
PHP script in nieuw venster Selecteer het PHP script
1
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
?>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

25/04/2014 16:35:40
Quote Anchor link
wat je nu doet is een vergelijking en het resultaat daarvan (true of false) meegeven aan de mysql_query functie.

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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.