INSERT in database lukt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Racoon smasher

racoon smasher

07/05/2014 10:10:26
Quote Anchor link
Zou iemand me kunnen helpen met het vinden van een fout in me code?
ik kan namelijk de fout niet vinden...


In de code hieronder moet een fout zitten waardoor hij de dingen niet insert in de database, de codes die hiervoor komen weet ik zeker van dat ze het doen.
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
                $insertCheck
=  "INSERT INTO companies
                                                (c_id,
                                                rm_id,
                                                c_name,
                                                c_contract,
                                                c_invisibility)
                                                
                                        VALUES    (NULL,
                                                '"
. stripslashes(mysql_real_escape_string($_POST['rm_id'])) . "',
                                                '"
. stripslashes(mysql_real_escape_string($_POST['c_name'])) . "',
                                                '"
. stripslashes(mysql_real_escape_string($_POST['c_contract'])) . "',
                                                '0');"
;
                                                
                $insertLinkbuilding = "INSERT INTO linkbuilding
                                                        (c_id,
                                                        y_id)
                                                        
                                                VALUES    (LAST_INSERT_ID(),
                                                        YEAR(NOW()));"
;
                                                        
                $queryInsert = mysql_query($insertCheck && $insertLinkbuilding);
            
                if($queryInsert)    
                {

                    $queryLogboek = mysql_query("INSERT INTO logboek (name, action, date) VALUES ('$username', 'Heeft het bedrijf " . $_POST['c_name'] . " toegevoegd', NOW() )");
            
                    if($queryLogboek)
                    {

                        echo '<script type="text/javascript">';
                        echo 'window.location = "check.php"';
                        echo '</script>';
                    }
                }

?>

- Aar -:
Topic hernoemd van: 'PHP bug' naar: 'INSERT in database lukt niet'.

Probeer de volgende keer een duidelijkere titel te bedenken die je probleem of vraagstelling aangeeft.
Gewijzigd op 07/05/2014 15:19:12 door - Ariën -
 
PHP hulp

PHP hulp

24/11/2024 15:20:59
 
Michael -

Michael -

07/05/2014 10:14:35
Quote Anchor link
Ik vind het jammer om te zien dat je nog steeds aanpassingen in je code mist na al onze opmerkingen.
Als je eens zou beginnen om goede foutafhandeling toe te voegen, zou je weten wat er fout gaat.

Daarnaast vind ik dit erg vreemd en heb nog nooit gezien dat je op die manier 2 inserts uitvoert.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$queryInsert = mysql_query($insertCheck && $insertLinkbuilding);

Op regel 26 voer je wel gelijk een insert uit in een query, zorg dat je één lijn trekt in je manier van programmeren en niet de ene keer wel direct in een query en de andere keer weer niet.
Regel 30-32 is i.m.o. nog steeds 'not done'.
 
Racoon smasher

racoon smasher

07/05/2014 10:21:47
Quote Anchor link
Michael - op 07/05/2014 10:14:35:
Ik vind het jammer om te zien dat je nog steeds aanpassingen in je code mist na al onze opmerkingen.
Als je eens zou beginnen om goede foutafhandeling toe te voegen, zou je weten wat er fout gaat.

Daarnaast vind ik dit erg vreemd en heb nog nooit gezien dat je op die manier 2 inserts uitvoert.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$queryInsert = mysql_query($insertCheck && $insertLinkbuilding);


Op regel 26 voer je wel gelijk een insert uit in een query, zorg dat je één lijn trekt in je manier van programmeren en niet de ene keer wel direct in een query en de andere keer weer niet.
Regel 30-32 is i.m.o. nog steeds 'not done'.


Bedankt voor je reactie,

Heb het probleem al opgelost
en ik gebruik al jullie tips wel, maar dingen zoals mysqli ga ik nu niet toepassen op dit CMS.

Regel 30-32 kan in principe helemaal geen kwaad, kan ook een code toevoegen waardoor die naar de history gaat en verder is de php header functie geen oplossing, omdat het algemeen bekend is dat die vaak problemen veroorzaakt.

en foutafhandeling gebruik ik regelmatig, maar bij deze toevallig niet.

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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
$insertCheck
=  "INSERT INTO companies
                                                (c_id,
                                                rm_id,
                                                c_name,
                                                c_contract,
                                                c_invisibility)
                                                
                                        VALUES    (NULL,
                                                '"
. stripslashes(mysql_real_escape_string($_POST['rm_id'])) . "',
                                                '"
. stripslashes(mysql_real_escape_string($_POST['c_name'])) . "',
                                                '"
. stripslashes(mysql_real_escape_string($_POST['c_contract'])) . "',
                                                '0');"
;
                                                
                $insertLinkbuilding = "INSERT INTO linkbuilding
                                                        (c_id,
                                                        y_id)
                                                        
                                                VALUES    (LAST_INSERT_ID(),
                                                        YEAR(NOW()));"
;
                                                        
                $queryInsert = mysql_query($insertCheck);
            
                if($queryInsert)    
                {

                    $queryInsertLinkbuilding = mysql_query($insertLinkbuilding);
                    
                    if ($queryInsertLinkbuilding)
                    {

                        $queryLogboek = mysql_query("INSERT INTO logboek (name, action, date) VALUES ('$username', 'Heeft het bedrijf " . $_POST['c_name'] . " toegevoegd', NOW() )");
                
                        if($queryLogboek)
                        {

                            echo '<script type="text/javascript">';
                            echo 'window.location = "check.php"';
                            echo '</script>';
                        }
                    }
                }

?>
 
Wouter J

Wouter J

07/05/2014 10:22:12
Quote Anchor link
Overigens is mysql_query($insertCheck && $insertLinkbuilding) compleet fout.
Allereerst kan mysql_query maar met 1 query tegelijkertijd werken.
Daarnaast zou er een ";" tussen de queries moeten zitten, stel dat mysql_query er 2 tegelijkertijd kon uitvoeren.
Als laatste is && een operator voor een conditie, als $insertCheck en $insertLinkbuilding een truty value is komt er true uit. Een string (query) is een truty value, dus je krijg hier mysql_query(true); wat niks is.
 
Ivo P

Ivo P

07/05/2014 10:23:26
Quote Anchor link
stripslashes(mysql_real_escape_string($_POST['rm_id']))

"oeps: mysql_real_Escape_string heeft misschien wel slashes toegevoegd. Laten we die zinnige slashes snel weer strippen....."

http://wiki.pfz.nl/magicquotes

Verder

Als je toch NULL wilt inserten in een kolom, laat die dan weg uit je insert query (zeker gezien de naam, lijkt het dat je uiteindelijk een auto increment waarde wilt inserten.)
 
- SanThe -

- SanThe -

07/05/2014 10:25:07
Quote Anchor link
Script is lek => SQL-Injection.
 
Racoon smasher

racoon smasher

07/05/2014 10:26:14
Quote Anchor link
Ivo P op 07/05/2014 10:23:26:
stripslashes(mysql_real_escape_string($_POST['rm_id']))

"oeps: mysql_real_Escape_string heeft misschien wel slashes toegevoegd. Laten we die zinnige slashes snel weer strippen....."

http://wiki.pfz.nl/magicquotes

Verder

Als je toch NULL wilt inserten in een kolom, laat die dan weg uit je insert query (zeker gezien de naam, lijkt het dat je uiteindelijk een auto increment waarde wilt inserten.)


ja ik weet het van die NULL, maar ik kreeg van iemand hier toen ook die tip mee, maar ik zal hem weghalen.
 
Michael -

Michael -

07/05/2014 10:30:35
Quote Anchor link
> en ik gebruik al jullie tips wel, maar dingen zoals mysqli ga ik nu niet toepassen op dit CMS.

Enkele zul je inderdaad toepassen, maar zoals foutafhandeling dus niet. Ik heb het hier niet over mysqli, daar hebben we het al over gehad :)

> Regel 30-32 kan in principe helemaal geen kwaad, kan ook een code toevoegen waardoor die naar de history gaat en verder is de php header functie geen oplossing, omdat het algemeen bekend is dat die vaak problemen veroorzaakt.

Klopt misschien dat je met javascript wat meer kan. Toch vind ik een php header hier meer op zijn plaats.
Als je de header op de juiste manier toepast levert deze nooit problemen op.

> en foutafhandeling gebruik ik regelmatig, maar bij deze toevallig niet.

Regelmatig zou altijd moeten zijn. Dan had je geweten wat er hier fout ging.
Wees constant in je programmeren en programmeer niet de ene keer zus en de andere keer zo.
 
Wouter J

Wouter J

07/05/2014 10:34:26
Quote Anchor link
>> Regel 30-32 kan in principe helemaal geen kwaad, kan ook een code toevoegen waardoor die naar de history gaat en verder is de php header functie geen oplossing, omdat het algemeen bekend is dat die vaak problemen veroorzaakt.

Het veroorzaakt problemen omdat mensen hun code verkeerd structureren en de functie daarom verkeerd gebruiken. De mysql_query (en ook mysqli_query) veroorzaakt ook duizenden fouten, ik zou die daarom ook maar niet gaan gebruiken...

Ook met PHP kun je naar de history gaan. Zoiets moet afgehandeld worden in PHP en niet in JavaScript, nu ga je namelijk maar ergens willekeurig een JavaScript script echoën. Om het nog erger te maken, je zorgt ervoor dat de pagina beschikbaar wordt in de browser. Je zorgt voor een onnodige extra response en dus onnodig tijdverlies.

Gebruik functies waarvoor ze zijn en gebruik ze goed.
 



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.