Autor Zpráva
unlucky
Profil
mam tabulku

settings: name|value

Chci, kdyz hodnota name neexistuje, tak se vlozi, jinak update. V php mam toto, ale nefrci :)

  foreach ($inputs as $config_name => $config_value)
        {
            if ($config_name != 'submit' && $config_name != 'save')
            {    
                $upd=mysql_query("
        IF NOT EXISTS(SELECT value FROM settings WHERE where name='$config_name')
          
              insert into settings (name,value) values('$config_name','$config_value')
         
        ELSE
        
              update settings set value='$config_value' where name='$config_name'
                 
        ");
 
}
        }
Tori
Profil
INSERT ... ON DUPLICATE KEY UPDATE
unlucky
Profil
mam toto, ale tez nefunguje :(
 insert into settings (name,value) values('x','y')
         ON DUPLICATE KEY (update settings set value='y' where name='x')
Tori
Profil
unlucky:
Ta druhá polovina (update) se volá v případě, že se pokoušíte vložit řádek se stejnou hodnotou ve sloupci s unikátním klíčem, a aplikuje se už na ten jeden nalezený řádek. Tj. závorky okolo update i část where jsou zbytečné.
Můžete pomocí funkce VALUES(jméno sloupce) zjistit tu právě vkládanou hodnotu. Má to výhodu v tom, že nemusíte znova psát "y", a můžete to použít i při vkládání více řádků. V odkázaném manuálu je příklad.
unlucky
Profil
nefunguje tam pry where a resi se to pres if

 insert into settings (name,value) values('x','y')
         ON DUPLICATE KEY update set name=(if name='x','y', value)

ale i toto mi tez nefunguje

vyreseno:

 insert into settings (name,value) values('x','y')
         ON DUPLICATE KEY update 

value='y',
name= if(name='x','hh',name) 
Tori
Profil
unlucky:
nefunguje tam pry where a resi se to pres if
Můžu se zeptat na zdroj informace? WHERE tam použít opravdu nejde, ale proč by mělo být jedinou možností IF?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0