Insert voegt soms leeg toe (PHP, MySQL)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Core Software Developer gericht op de toekoms

Bedrijfsomschrijving Dit bedrijf in Hoofddorp is per direct op zoek naar een ervaren Software .Net Developer die het technisch team bestaande uit 25 professionals komt versterken. Het bedrijf ontwikkelt geavanceerde softwaretoepassingen bestemd voor de optimalisatie van financiële bedrijfsprocessen bij diverse bedrijven, nationaal en internationaal. De organisatie is al tientallen jaren erg succesvol in en zij zijn nog steeds groeiende. Enkele kernpunten die het bedrijf beschrijven zijn informeel, geavanceerd, klantgericht, service minded en duurzaamheid. Een echt mooie organisatie dus om onderdeel van uit te maken! Functieomschrijving Je 7 Software Development collega's van de R&D afdeling hebben je versterking nodig om de

Bekijk vacature »

Servicedesk Medewerker Software PHP SQL

Wie wordt jouw werkgever?: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever is gespecialiseerd in de ontwikkeling van software binnen het belastingdomein. Wil jij helpen om storingen op te lossen? Heb je ervaring met het werken als helpdeskmedewerker? Vaste baan: Servicedeskmedewerker SQL MBO 2.200 - 2.600 Servicedeskmedewerker Deze werkgever levert softwareproducten aan een groot aantal regionale belastingkantoren, waterschappen en gemeenten. Onze dienstverlening kenmerkt zich door de ontwikkeling van softwareproducten, implementatiebegeleiding bij bestaande producten, datacenter- diensten, consultancy en maatwerk. Deze werkgever is een veelzijdige organisatie. Je werkt voor de

Bekijk vacature »

Bryan De Baar

Bryan De Baar

26/01/2022 13:37:34
Quote Anchor link
Goedemiddag,


Ik zit met een klein dingetje waar ik graag wat hulp bij zou willen.

Bij het invoegen van data in de database blijft soms een kolom waarde leeg, terwijl deze kolom niet leeg zou mogen zijn.
Ik zou dan toch een error moeten krijgen en dat deze word afgebroken?


Onderstaand de MySQLI afhandeling.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
    if(mysqli_query($connection, $sql)){
        insertsuc();
        mysqli_close($connection);
    }
else{
        $response['status'] = 'errors';
                $response['errors'] = array('Helaas er is iets mis gegaan :-|, probeer het opnieuw of neem contact met ons op.');
                mysqli_close($connection);
    }

?>


Kan ik nog op een andere / betere manier deze controle uitvoeren?
 
PHP hulp

PHP hulp

27/05/2022 21:36:31
 
- Ariën -
Beheerder

- Ariën -

26/01/2022 14:19:43
Quote Anchor link
Als de query gewoon lukt, dan zal je die melding nooit zien.
Mogelijk wordt het feit dat de kolom leeg is misschien in je database afgedwongen?

Wat voor query is het?
En heb je een dumpje van je structuur?
 
Bryan De Baar

Bryan De Baar

26/01/2022 20:44:22
Quote Anchor link
Hallo Ariën,


Alle kolommen mogen niet leeg zijn, dat heb ik ingesteld in de database. Ik dacht dat de DB een fout terug zou geven als er iets wel leeg is en het opslaan zou afbreken om dus gatenkaas te vermijden.
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
$name
        = $_POST['name'];
$email         = $_POST['email'];
$phone         = $_POST['phone'];
$date         = $_POST['when'];
$what         = $_POST['resertype'];

if(isset($name)){    
    if(trim($name) == ''){
        $errors[] = 'Je bent vergeten je naam in te vullen.';
    }
elseif(strlen($name) <= 1){
         $errors[] = 'Een naam met één letter bestaat niet.';
    }
    
}
else{
    $errors[] = 'Je bent vergeten je naam in te vullen.';
}



if(isset($email)){
    if(trim($email) == ''){
        $errors[] = 'Je bent vergeten je e-mailadres in te vullen';
    }
elseif(!preg_match('/(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z]+$)/', $email)){
        $errors[] = 'Onjuist e-mailadres';
    }
}
else{
    $errors[] = 'Je bent vergeten je e-mailadres in te vullen';
}



if(isset($phone)){
    if(trim($phone) == ''){
        $errors[] = 'Je bent vergeten je telefonnummer in te vullen';
    }
elseif(!preg_match('/^\d+$/',$phone)){
        $errors[] = 'Onjuist telefoonnummer';
    }
elseif(strlen($phone) !== 10){
        $errors[] = 'Een telefonnummer bestaat uit 10 cijfers!';
    }
}
else{
    $errors[] = 'Je bent vergeten je telefoonnummer in te vullen';
}


if(isset($date)){
    if(trim($date) == ''){
        $errors[] = 'Wanneer wil je komen?';
    }
elseif(!preg_match('/^\d{2}+-\d{2}+-\d{4}/',$date)){
        $errors[] = 'Deze datum kan niet kloppen';
    }
}
else{
    $errors[] = 'Wanneer wil je komen?';
}


if(isset($what)){
    global $wpdb;
    $get_restype    = $wpdb->prefix . "res_types";
    $connection             = mysqli_connect($wpdb->dbhost, $wpdb->dbuser, $wpdb->dbpassword, $wpdb->dbname);
    $sql                    = "SELECT type FROM $get_restype WHERE type='$what'";
    $result                    = mysqli_query($connection, $sql);
    if(mysqli_num_rows($result) == 0){
        $errors[] = 'Hiervoor kun je niet reserveren';
    }
}


$connection     = mysqli_connect($wpdb->dbhost, $wpdb->dbuser, $wpdb->dbpassword, $wpdb->dbname);
$sql            = "INSERT INTO $the_table (name, email, phone, date, what) VALUES ('$name', '$email', '$phone', '$dateres', '$what')";

if(mysqli_query($connection, $sql)){
        insertsuc();
        mysqli_close($connection);
    }
else{
        $response['status'] = 'errors';
                $response['errors'] = array('Helaas er is iets mis gegaan :-|, probeer het opnieuw of neem contact met ons op.');
                mysqli_close($connection);
    }

?>


Kun je op een manier controleren of alle data correct is opgeslagen? Dus als een kolom leeg is wat niet mag dat je een error terug krijgt waar je iets mee kunt?
 
- Ariën -
Beheerder

- Ariën -

26/01/2022 20:54:12
Quote Anchor link
Ik raad aan de $sql eens te loggen.
 
Adoptive Solution

Adoptive Solution

26/01/2022 22:00:57
Quote Anchor link
Van regel 8 tot 62 worden testen uitgevoerd en ongeacht de uitslag wordt een INSERT gedaan.
Wellicht eerst even testen of $errors leeg is.
 
Ivo P

Ivo P

27/01/2022 11:08:21
Quote Anchor link
Ik raad daarnaast aan om niet zelf een regex te verzinnen om een emailadres te controleren: Dat gaat altijd mis.
Ooit een artikel gelezen waar de regex (en misschien wel meerdere) onderhand een A4tje vol waren.
En nog niet 100%.

PHP heeft daar gewoon filter functies voor

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(!filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL)) {
   $error = 'email fout';
}

?>


Ik zie zo al, dat mijn mailadres niet door
/(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z]+$)/

gaat komen: phphulp@ivo.mijn-achternaam.nl

Kennelijk vind jij dat een mailadres maar 1x een punt na het @-teken mag hebben?
Iedereen@bbc.co.uk heeft daar ook een probleem.

Daarentegen laat je ...---...@---php---.net wel weer door.

Toevoeging op 27/01/2022 11:11:00:

enne: iemand met een ' in zijn naam, laat jouw query ook stuk lopen
 
- Ariën -
Beheerder

- Ariën -

28/01/2022 16:40:49
Quote Anchor link
Ivo P op 27/01/2022 11:08:21:
enne: iemand met een ' in zijn naam, laat jouw query ook stuk lopen

Hier is een SQL injection gevaar!!!!!!
 



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.