24.06.2013 21:38
1
Pěkný večer přeji

Rád bych vás poprosil, jak docílím prohození ID u dvou záznamů v mysql. Dle mého to asi musí jít nějak "inteligentněji", nicméně mě nefunguje ani toto.

PHP kód:
mysql_query("UPDATE `who-we-help` SET `id` = '0' WHERE `id` = ".$_GET['co']);
mysql_query("UPDATE `who-we-help` SET `id` = '".$_GET['co']."' WHERE `id` = ".$_GET['za']);
mysql_query("UPDATE `who-we-help` SET `id` = '".$_GET['za']."' WHERE `id` = ".$_GET['co']); 
Prosím a zároveň děkuji
24.06.2013 22:00
2
ID jako identifikátor záznamu nikdy nepotřebujete měnit, pokud ano, je databáze špatně navržená. Navíc u vašeho provedení, pokud jeden z dotazů selže, už tu tabulku nedáte nikdy dohromady.
24.06.2013 22:04
3
Presne jak pise Honza :)
24.06.2013 22:21
4
Pokud použije transakce a selže jeden dotaz, tak máme rollback ne?

Nicméně taky bych nedoporučoval to měnit
24.06.2013 22:40
5
Pokud se jedna o autoincrement, jakoze ano, pokud je db spravne navrzena, pak tento udaj ani zmenit nelze.
24.06.2013 22:51
6
a nebo jen dotazem nacist data obou zaznamu a pak jednoduchym UPDATE aktualizovat s prohozenym ID.
24.06.2013 22:53
7
to prohozeni pres update nebude dle me fungovat ... nactes si obe ID, provedes update prvni a okamzite selzes na unique id ...
24.06.2013 23:07
8
Tak se tedy vyhnu manipulaci s ID, děkuji za upozornění.

Nicméně při použití
Kód:
mysql_query("UPDATE `who-we-help` SET `radic` = '".$_GET['co']."' WHERE `radic` = ".$_GET['za']);
   // mysql_query("UPDATE `who-we-help` SET `radic` = '".$_GET['za']."' WHERE `radic` = ".$_GET['co']);
Bohužel opravdu druhý dotaz selže. Proměnné se samozřejmě načítají z URL.
24.06.2013 23:14
9
At zije SQL Injection :D

A u typu varchar se poziva LIKE misto =
24.06.2013 23:44
10
Původně odeslal mytrix
At zije SQL Injection :D

A u typu varchar se poziva LIKE misto =
Není to varchar, ale int a toto je pouze v administraci takto řešené.
24.06.2013 23:56
11
pak by tam ale nemely byt ty jednoduche uvozovky.. ale to jen na okraj
25.06.2013 00:16
12
Původně odeslal mytrix
pak by tam ale nemely byt ty jednoduche uvozovky.. ale to jen na okraj
Asi tam nejsou potřebné, ale tak mi to vyhodilo přímo v phpmyadmin.

---------- Příspěvek doplněn 25.06.2013 v 11:25 ----------

Nechápu, proč nefunguje následující, když mi to přímo vyplivlo v phpmyadmin.

Kód:
 $sql = "UPDATE `who-we-help` SET `radic` = '70' WHERE `id` = 4;
           UPDATE `who-we-help` SET `radic` = '140' WHERE `id` = 5;";
    
     mysql_query($sql);
25.06.2013 20:10
13
Původně odeslal gransy
to prohozeni pres update nebude dle me fungovat ... nactes si obe ID, provedes update prvni a okamzite selzes na unique id ...
proc by selhal na unique klici, kdyz pak v update dotazech se updatuje jen data bez id :-)
25.06.2013 21:29
14
Původně odeslal David Kácha
ANechápu, proč nefunguje následující, když mi to přímo vyplivlo v phpmyadmin.

Kód:
 $sql = "UPDATE `who-we-help` SET `radic` = '70' WHERE `id` = 4;
           UPDATE `who-we-help` SET `radic` = '140' WHERE `id` = 5;";
    
     mysql_query($sql);
1) nemuzes davat vice queries do mysql_query. Mas tam dve, musi byt jedna. Tak pokud to chces takto, rozdel to.
2) misto mysql_query je dobre pouzivat nejakou abstraktni vrstvu nebo alespon mysqli