Avatar billede beograd Novice
25. februar 2005 - 12:37 Der er 22 kommentarer og
1 løsning

Indsæt NULL i MySQL

Hej, er der nogen som vil tjekke denne sourse?

$myArray = array('slika_main_src', 'slika_main_link', 'slika_main_opis', 'slika_vesti_src', 'slika_potpis', 'galerija_no', 'vest_tekst_full', 'vest_link', 'video');

foreach($myArray as $val) {
      if(!($$val)) {
              $$val = 'NULL';
          }
    }


      $sql= "
        INSERT INTO tekstovi ( id , status , datum , izvor , naslov , slika_main_src , slika_main_link , slika_main_opis , slika_vesti_src , slika_potpis , galerija_no , vest_tekst_short , vest_tekst_full , vest_link , video )
        VALUES ('','$status','$datum','$izvor','$naslov','$slika_main_src','$slika_main_link','$slika_main_opis','$slika_vesti_src','$slika_potpis','$galerija_no','$vest_tekst_short','$vest_tekst_full','$vest_link','$video')";

$execsql=mysql_query($sql);


- Åbenbart skriver den NULL som ord og ikke som værdi...

Tak.
Avatar billede sone Nybegynder
25. februar 2005 - 12:41 #1
prøv lige at udskrive værdien af $sql
Avatar billede beograd Novice
25. februar 2005 - 12:48 #2
INSERT INTO tekstovi ( id , status , datum , izvor , naslov , slika_main_src , slika_main_link , slika_main_opis , slika_vesti_src , slika_potpis , galerija_no , vest_tekst_short , vest_tekst_full , vest_link , video ) VALUES ('','8','2005-02-25','www.info.net','ninanan','foobar',NULL,'spameggs',NULL,NULL,'45','kkkkk',NULL,NULL,NULL)
Avatar billede sone Nybegynder
25. februar 2005 - 12:50 #3
skulle være OK...
Skal ID ikke være et tal?
Avatar billede jakoba Nybegynder
25. februar 2005 - 13:24 #4
NULL betyder 'dette felt har ikke fået nogen værdi', så den nemme måde er ikke at give en værdi til de felter der ikke skal have en værdi (skal være NULL) ;-)

INSERT INTO tekstovi ( id , status , datum , izvor , naslov , slika_main_src ,  slika_main_opis ,  galerija_no , vest_tekst_short ) VALUES ('','8','2005-02-25','www.info.net','ninanan','foobar','spameggs','45','kkkkk')

mvh JakobA
Avatar billede avminarm Juniormester
25. februar 2005 - 13:25 #5
sone>> der er nok auto_increment på id
beograd>> det se da ok ud - NULL fortolkes jo en ikke eksisterende værdi
Avatar billede avminarm Juniormester
25. februar 2005 - 13:26 #6
jakobA's løsning er klart den bedste
Avatar billede sone Nybegynder
25. februar 2005 - 13:35 #7
Men hvis I nu kigger på mandens kode... så kan felterne jo have en værdi.
beograd >> Er det vigtigt om der er et NULL i DB eller en tom streng ('')?
Avatar billede detox Nybegynder
25. februar 2005 - 13:50 #8
Hvad med at bruge:

foreach($myArray as $val) {
      if(!($$val)) {
              $$val = '';
          }
    }

Jeg går ud fra dine felter er: DEFAULT NULL
Avatar billede detox Nybegynder
25. februar 2005 - 13:54 #9
Hmm, det vil jo bare give en tom streng. Jeg synes nu osse din forespørgsel ser rigtig ud.
Avatar billede detox Nybegynder
25. februar 2005 - 13:57 #10
Prøv med en evt. fejlmelding her:

$execsql=mysql_query($sql) or die(mysql_error());
Avatar billede detox Nybegynder
25. februar 2005 - 14:05 #11
Ellers må du gøre sådan her:

$myArray = array('slika_main_src', 'slika_main_link', 'slika_main_opis', 'slika_vesti_src', 'slika_potpis', 'galerija_no', 'vest_tekst_full', 'vest_link', 'video');

foreach($myArray as $val) {
      if(!($$val)) {
              $$val = 'NULL';
          } else {
              $$val = "'{$$val}'";
          }
    }


      $sql= "
        INSERT INTO tekstovi ( id , status , datum , izvor , naslov , slika_main_src , slika_main_link , slika_main_opis , slika_vesti_src , slika_potpis , galerija_no , vest_tekst_short , vest_tekst_full , vest_link , video )
        VALUES ('',$status,$datum,$izvor,$naslov,$slika_main_src,$slika_main_link,$slika_main_opis,$slika_vesti_src,$slika_potpis,$galerija_no,$vest_tekst_short,$vest_tekst_full,$vest_link,$video)";

$execsql=mysql_query($sql);
Avatar billede detox Nybegynder
25. februar 2005 - 14:09 #12
Den cuttede i forespørgslen:

$myArray = array('slika_main_src', 'slika_main_link', 'slika_main_opis', 'slika_vesti_src', 'slika_potpis', 'galerija_no', 'vest_tekst_full', 'vest_link', 'video');

foreach($myArray as $val) {
      if(!($$val)) {
              $$val = 'NULL';
          } else {
              $$val = "'{$$val}'";
          }
    }


      $sql= "
        INSERT INTO tekstovi ( id , status , datum , izvor , naslov , slika_main_src , slika_main_link , slika_main_opis , slika_vesti_src , slika_potpis , galerija_no , vest_tekst_short , vest_tekst_full , vest_link , video )
        VALUES ('', $status, $datum, $izvor, $naslov, $slika_main_src, $slika_main_link, $slika_main_opis, $slika_vesti_src, $slika_potpis, $galerija_no, $vest_tekst_short, $vest_tekst_full, $vest_link, $video)";

$execsql = mysql_query($sql);
Avatar billede sone Nybegynder
25. februar 2005 - 14:17 #13
Helt præcis hvilken fejl får du fra MySQL?
Avatar billede detox Nybegynder
25. februar 2005 - 14:21 #14
sone -> Der er ingen fejl, den indsætter blot NULL som tekst.
Avatar billede jakoba Nybegynder
25. februar 2005 - 14:30 #15
NULL      er symbolet for 'ingen værdi'
'NULL'    er en streng der indeholder bogstaverne N, U, L og L

du har anførselstegn omlring alle dine variable i værdilisten og derfor står der 'NULL' når kommandoen kommer frem til MySQL.
Avatar billede detox Nybegynder
25. februar 2005 - 14:31 #16
...og det kan du fx afhjælpe ved hjælp af mit forslag: 14:09:21
Avatar billede detox Nybegynder
25. februar 2005 - 14:45 #17
En anden, og sikkert bedre, måde at gribe det an på:

$myArray = array('slika_main_src', 'slika_main_link', 'slika_main_opis', 'slika_vesti_src', 'slika_potpis', 'galerija_no', 'vest_tekst_full', 'vest_link', 'video');

foreach($myArray as $val) {
      if(isset($$val)) {
              $felter[] = $val;
              $values[] = $$val;
          }
    }
$feltstr = implode(', ', $felter);
$valuestr = "'" . implode("', '", $values) . "'";

$sql= "INSERT INTO tekstovi ($feltstr) VALUES ($valuestr)";
$execsql = mysql_query($sql);
Avatar billede detox Nybegynder
25. februar 2005 - 14:50 #18
Evt.:

if(!empty($$val)) {

alt efter dine variablers beskaffendhed.
Avatar billede beograd Novice
25. februar 2005 - 15:53 #19
I have to continue in english since i don't know danish... i hope that is not the problem

Detox made fine optimization of my code, but without result for inserting.. it is still inserting '' (blank), but not NULL. NULL IS default value for most of the fields.

here's the SQL output:
INSERT INTO tekstovi (id, status,datum,izvor,naslov,slika_main_src,slika_main_link,slika_main_opis,slika_vesti_src,slika_potpis,galerija_no,vest_tekst_full,vest_link,video) VALUES ('', '8', '2005-02-25', 'www.info.net', 'sth', '', '', 'sthelse', '', '', '', 'foo', 'foofoo', '0')
Avatar billede jakoba Nybegynder
25. februar 2005 - 16:00 #20
that  is why detox recommended using
    ! empty( $$val )
instead of
    isset( $$val )
Avatar billede beograd Novice
28. februar 2005 - 09:04 #21
yes, that did it!

thank you everyone for your help
Avatar billede beograd Novice
28. februar 2005 - 13:55 #22
detox,
du skal liige have nogle points...
Avatar billede detox Nybegynder
28. februar 2005 - 20:19 #23
Ok så og velbekommen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester