Versio

INSERT INTO NULL

Overzicht Reageren

Mr.Moe

Mr.Moe

22/04/2009 10:10:00
Quote Anchor link
Hallo ik zit namelijk met het volgende.

ik wil mijn gegevens in een database krijgen aan de hand van een formulier. Het formulier laat me vrij om niet alle velden te moeten invullen.

Ik ga bv mijn naam ophalen. $naam = $_POST['naam'];
dus $naam = Moe of $naam = ''

ok nu wil ik dit in mijn database steken. Als de naam is ingevuld, geen probleem. Als de naam een lege string is, zou ik er graag NULL zien staan. Niet de string NULL, maar NULL van dit is een leeg veld.

Hoe kan ik dit doen?

Hopelijk is het duidelijk genoeg.
 
PHP hulp

PHP hulp

25/05/2012 04:49:56
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Danny Appeldoorn

Danny Appeldoorn

22/04/2009 10:14:00
Quote Anchor link
if (empty($_POST['naam'])){

$naam = "NULL";

}

else

{

$naam = $_POST['naam'];

}
 
Mr.Moe

Mr.Moe

22/04/2009 10:17:00
Quote Anchor link
Als ik dat doe, komt er in mijn db NULL te staan als string.
 
TJVB tvb

TJVB tvb

22/04/2009 10:19:00
Quote Anchor link
Je moet dan ook $naam = NULL; gebruiken
 
Danny Appeldoorn

Danny Appeldoorn

22/04/2009 10:20:00
Quote Anchor link
Oh oke (gebruik in prencipe nooit null..)
 
Mr.Moe

Mr.Moe

22/04/2009 10:23:00
Quote Anchor link
$naam = NULL (al geprobeerd) Hoe schrijf ik dit dan in mijn query?

$query = "INSERT INTO tblnaam (naam) VALUES ('$naam')";

Als ik het zo doe blijft het veld leeg en komt er geen NULL (van ik ben leeg) te staan.
 
Dennis Mertens

Dennis Mertens

22/04/2009 10:38:00
Quote Anchor link
Gebruik een CASE (of IF-)statement in de INSERT query. Dit kan gewoon met (My)SQL.
 
TJVB tvb

TJVB tvb

22/04/2009 10:40:00
Quote Anchor link
Je moet dan zorgen dat die '$naam' veranderd in $naam. Verder is het niet verstandig om je variabelen buiten je quotes te halen.
 
Mr.Moe

Mr.Moe

22/04/2009 10:43:00
Quote Anchor link
@Dennis: Hoe doe je dit dan juist, want dit lukt me niet.
 
- SanThe -

- SanThe -

22/04/2009 10:52:00
Quote Anchor link
NULL is een sql-waarde, dus daar moeten géén quotes omheen staan.
 
Jelmer rrrr

Jelmer rrrr

22/04/2009 11:11:00
Quote Anchor link
Je zou er ook een functie voor kunnen maken, a la
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
<?php
function value_or_null($value)
{

    $value = trim($value);
    
    if($value == '') // geen empty(), omdat je dan niet meer '0' in kan vullen
        return 'NULL';
    else
        return sprintf("'%'", mysql_real_escape_string($value));
}


$query = '
    INSERT INTO antwoorden (
        vraag_1,
        vraag_2,
        vraag_3
    ) VALUES (
        '
. value_or_null($_POST['vraag_1']) . ',
        '
. value_or_null($_POST['vraag_2']) . ',
        '
. value_or_null($_POST['vraag_3']) . '
    )'
;
?>
 
Dennis Mertens

Dennis Mertens

22/04/2009 12:20:00
Quote Anchor link
http://dev.mysql.com/doc/refman/5.0/en/case-statement.html

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
mysql_query("
    INSERT INTO antwoorden
    (vraag)
    VALUES (
        CASE
            WHEN '"
.$value."' == '' THEN
                NULL
            ELSE
                '"
.$value."'
        END CASE
"
);
[
/code]
 
Mr.Moe

Mr.Moe

22/04/2009 12:41:00
Quote Anchor link
danke allemaal.
 
Dennis Mertens

Dennis Mertens

22/04/2009 13:11:00
Quote Anchor link
Wat heb je nu gebruikt dan? :)
 
Mr.Moe

Mr.Moe

22/04/2009 17:05:00
Quote Anchor link
Ik heb die functie van Jelmer gebruikt, deze werkt voor wat het moet doen. Maar het uiteindelijke script werkt nog steeds niet.

Echt vreemd, er moet via een query 1 record worden opgehaald, dit om te zien of de ingevoerde gegevens kloppen. in de tabel waar dit wordt uitgehaald zijn echter nog andere velden, deze zijn van het het type tinyint. Als deze al ingevuld zijn met een 0, werkt de query niet. Als deze nog niet ingevuld zijn (dus NULL) werkt de query wel. echt vreemd.

*edit: het ligt niet aan bovenstaande, lees nieuwe post

groeten

Moe
Gewijzigd op 01/01/1970 01:00:00 door Mr.Moe
 
Mr.Moe

Mr.Moe

22/04/2009 17:25:00
Quote Anchor link
Alvast sorry voor de bump.

Gelieve Niet Bumpen::
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de http://www.phphulp.nl/imgs/forum/edit.gif knop om je tekst aan te passen.

SanThe.



Het probleem helemaal omschreven.
ik ben bezig met het vernieuwen van een website, voor mijn stage. Deze website heeft users, maar die zitten niet in een db, enkel in een .txt file. Dus ik heb deze users uitgelezen om deze in een db te steken. dit is echter gelukt. Omdat we met een nieuwe website zitten, zou ik ze graag even opnieuw laten verifieren, dit ook om te zien of ze nog intresse hebben. Echter kan er niet geverifieerd worden op dit moment.
Op dit moment lukt het verifieren pas nadat ik eerst de user heb 'geediteert' in de db. Staat tussen haakjes omdat ik helemaal niets verander ofzo, druk enkel op start. Dit is natuurlijk niet de bedoeling he.

Aan wat kan dit liggen?

groeten,

Thomas
Gewijzigd op 01/01/1970 01:00:00 door Mr.Moe
 



Overzicht Reageren