abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 1
včera 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 5
včera 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 0
včera 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
včera 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
včera 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
1.12. 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
1.12. 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 0
1.12. 15:16 | Komunita

Na GOG.com začal zimní výprodej. Řada zlevněných her běží oficiálně také na Linuxu. Hru Neverwinter Nights Diamond lze dva dny získat zdarma. Hra dle stránek GOG.com na Linuxu neběží. Pomocí návodu ji lze ale rozběhnout také na Linuxu [Gaming On Linux].

Ladislav Hagara | Komentářů: 1
1.12. 13:14 | Bezpečnostní upozornění

Byla vydána verze 2.7.1 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Řešeno je několik bezpečnostních problémů. Aktualizován byl především Tor Browser na verzi 6.0.7. Tor Browser je postaven na Firefoxu ESR (Extended Support Release) a právě ve Firefoxu byla nalezena a opravena vážná bezpečnostní chyba MFSA 2016-92 (CVE-2016-9079, Firefox SVG Animation

… více »
Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 759 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Jak vypsat jeden jediný údaj z mysql

9.3.2012 03:36 Marie K.
Jak vypsat jeden jediný údaj z mysql
Přečteno: 2207×
Jak můžu vypsat jednu jedinou hodnotu (číslo) z jednoho sloupce v jednom řádku v mysql? Děkuji za tip ;)

Řešení dotazu:


Odpovědi

Řešení 2× (tuxmartin, blondak)
H0ax avatar 9.3.2012 05:09 H0ax | skóre: 36 | blog: Odnikud_nikam
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Správně napsaným selectem.
LinuxWay | blog |  LiCo
9.3.2012 12:47 Marie K.
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Chtěla jsem slyšet název funkce, mysql_fetch_array(), mysql_fetch_object(), mysql_fetch_row() tad.. Kdybych to věděl, tak bych vás neoptěžovala
9.3.2012 13:03 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Zřejmě myslíte PHP. Pak buď PDO nebo MySQLi.
9.3.2012 13:22 David Karban | skóre: 12 | blog: DK
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Zdravím,

problém je v tom, že na tak obecně položenou otázku je skutečně odpověď vhodným selectem správně, jednoduše v dotazu nebylo nic co by dokázalo odpověď upřesnit. Je dobré napsat aspoň v jakém jazyce to potřebujete, případně i z jaké tabulky (včetně schéma té tabulky). Pak je čeho se chytit a na co odpovědět :).

pavlix avatar 9.3.2012 20:59 pavlix | skóre: 53 | blog: pavlix
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
+1

Nevidím v původním dotazu ani jedinou zmínku o PHP.
GentooFedoraSCRAM – Jsem open source vývojář, nikoli markeťák ⇒ názory zde uvedené jsou jen mé vlastní.
9.3.2012 13:36 Marie K.
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Myslela jsem to všeobecně, zkusím specifikovat dotaz lépe. Mám v MySQL tabulku s názvem rostlinky tabulka obsahuje mimo jiné i mnou požadovaný sloupeček s názvem status ze kterého potřebuji získat uložený údaj. Sloupeček je typu int(10). Jedná se o to, že nechci tahat a ukládat do paměti serveru zbyteční data se kterými nehodlám pracovat. Jedná se pouze a výhradně o jednu jedinou hodnotu se kterou budu v PHP nadále pracovat. Děkuji
9.3.2012 14:48 Alf | skóre: 18
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql

V selectu napíšete právě ten sloupeček a pomocí podmínky nebo limitu vyberete pouze jeden řádek. V součtu je to tedy pouze jedna hodnota.

Ale stejně mi není jasné, na co se ptáte.

9.3.2012 14:57 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Nebo-li
SELECT status FROM rostlinky WHERE …
kde za WHERE bude nějaká podmínka vybírající požadovaný 1 řádek.
9.3.2012 15:00 Kit
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Tahání údajů z databáze po jednom bývá pro ni dost zatěžující. Zpravidla je výhodnější vytáhnout jedním dotazem všechny údaje, které budu potřebovat na konkrétní stránce zobrazit. Proto by sis měla dobře rozmyslet svůj požadavek. Často je lepší si vytáhnout celý záznam o rostlince, uložit do objektu a z něj teprve jednotlivé údaje vybírat.

Původnímu požadavku by měl odpovídat např. tento dotaz:
SELECT status FROM rostlinky WHERE nazev="kopretina";
Ovšem jak už jsem psal, nepřipadá mi moc rozumný.
9.3.2012 18:26 Marie K.
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Nevím no, asi se vyjadřuji fakt blbě, odpovídáte na něco jiného, než se ptát :-( SELECT mě vůbec nezajíma, ptám se na načtení, čili mě zajímá nějaká fce() která to dokáže načíst/uložit do nějaké prom. Díky
MMMMMMMMM avatar 9.3.2012 19:22 MMMMMMMMM | skóre: 41 | blog: unstable | Valašsko :-)
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
$dotaz = mysql_query('SELECT status FROM rostlinky WHERE rostlina=\'kaktus\' LIMIT 1');
if($dotaz) $status = mysql_result($dotaz);
9.3.2012 19:43 Marie K.
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Sláva ;-) mysql_result() jsem chtěla slyšet...
$dotaz = mysql_query('SELECT status FROM rostlinky WHERE rostlina=\'kaktus\' LIMIT 1');
if($dotaz) $status = mysql_result($dotaz);
Díky
9.3.2012 20:12 Kit
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
To si z nás děláš srandu?
pavlix avatar 9.3.2012 21:00 pavlix | skóre: 53 | blog: pavlix
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Taky mám ten dojem.
GentooFedoraSCRAM – Jsem open source vývojář, nikoli markeťák ⇒ názory zde uvedené jsou jen mé vlastní.
13.3.2012 12:42 Marie K.
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Ne, nedělám, proč jako?

Tohle vůbec nic nevrací, navíc se v manuálu píše, že mysql_result() musí obsahovat 3 parametry, ne jen jeden jako je tomu tady, ale mě to nic nevypíše ani se třemi parametry.
$dotaz = mysql_query('SELECT status FROM rostlinky WHERE rostlina=\'kaktus\' LIMIT 1');
if($dotaz) $status = mysql_result($dotaz);
Tarmaq avatar 13.3.2012 13:13 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
tip: kdyz budes psat dotaz do uvozovek, nemusis pak ty apostrofy uvnitr dotazu escapovat.
$dotaz = mysql_query("SELECT status FROM rostlinky WHERE rostlina='kaktus' LIMIT 1");
Don't panic!
Josef Kufner avatar 13.3.2012 14:25 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Výsledkem SQL dotazu je vždy tabulka. Pokud uděláš dotaz "SELECT 1", tak výsledkem je tabulka o jednom řádku a jednom sloupci, kde v tom jednom políčku je číslo 1.

mysql_result() vrací políčko takové tabulky. První parametr je výsledek dotazu (resource na tu tabulku), druhý je řádek tabulky a třetí je sloupec. Jak jsi si přečetl v dokumentaci.

Takže když chceš ten tvůj status, uděláš prostě toto:
$vysledek_dotazu = mysql_query("
    SELECT status
    FROM rostlinky
    WHERE rostlina='kaktus'
    LIMIT 1
");
if ($vysledek_dotazu) {
    $status = mysql_result($vysledek_dotazu, 0, 0);
}
mysql_free_result($vysledek_dotazu);
Tělo toho ifu je (v tomto případě) ekvivalentní s tímto:
    mysql_data_seek($vysledek_dotazu, 0);
    list($status) = mysql_fetch_row($vysledek_dotazu);
A s tímto:
    mysql_data_seek($vysledek_dotazu, 0);
    $row = mysql_fetch_assoc($vysledek_dotazu);
    $status = $row['status'];
Přičemž mysql_data_seek() tam má smysl jen pokud si chceš vyzkoušet všechny tři možnosti najednou. Jinak na začátku jsi na začátku, takže není třeba se na začátek posouvat.
Hello world ! Segmentation fault (core dumped)
13.3.2012 14:52 Marie K.
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Čili pokud zadám tohle,

$status = mysql_result($vysledek_dotazu, 0, 0);

Tak načte data z řádku 0 a sloupce 0? Co je to za hloupost? Pochopila bych řádek 1 a sloupec 1 ;-)

Ihmo, co když mám ale v sql dotazu WHERE která určuje jak požadovaný řádek podle id(autoincrement) tak název sloupečku?

Děkuji
13.3.2012 15:02 Kit
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Tohle není Fortran, ale PHP. Indexy polí jsou od 0. Je to napsáno v manuálu tučným písmem.

WHERE určuje pouze řádek, nikoli sloupec. Sloupce se vybírají podle seznamu výrazů za klíčovým slovem SELECT.
13.3.2012 15:11 Marie K.
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Čili se nejedná o řádek s id ale o číslo řádku? V tom případě by mě zajílo jaký při tom používá SORT BY :D

$status = mysql_result($vysledek_dotazu, 'tady je číslo řádku', 'tady je číslo sloupce');
Tarmaq avatar 13.3.2012 15:34 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
mila Marie, pokud si ve WHERE omezis pocet zaznamu na ten jeden konkretni, v SELECT si urcis ze se ma vybrat jen sloupec status, nejlip (podle me) udelas kdyz pouzijes toto:
$result = mysql_query("SELECT status FROM rostlinky WHERE id = 'kaktus'");
$row = mysql_fetch_assoc($result);
$status = $row['status'];
Don't panic!
13.3.2012 16:59 Marie K.
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
A při použití toho zázračného PDO by to bylo takto?

$sql = "SELECT status FROM rostlinky WHERE id = 'kaktus'";

$db = new PDO('dblib:host=your_hostname;dbname=your_db;charset=UTF-8', $user, $pass);
$db->query($sql) as $row;
echo $row['status'];
13.3.2012 18:08 Marie K.
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Všichni mě tlačíte do PDO a pak mlčíte :-( ;)
13.3.2012 20:12 Kit
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Jak mlčíme? Vždyť jsem ti to už napsal.
13.3.2012 16:07 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Čili se nejedná o řádek s id ale o číslo řádku? V tom případě by mě zajílo jaký při tom používá SORT BY
Takový, jaký uvedete v SQL dotazu. Pokud neuvedete žádný, je řazení náhodné.

Chtělo by to nastudovat alespoň úplné základy SQL. Relační databáze není pole ani asociativní pole, jak je znáte z PHP. Jsou to sady záznamů. Pomocí dotazů můžete vybírat takovou sadu záznamů, která vyhovuje zadaným podmínkám. Nevybíráte tedy 5. řádek, ale řádky (všechny), které vyhovují podmínce, že jméno je Tomáš a věk 53. Například. Nebo vybíráte řádek, který odpovídá podmínce, že jeho unikátní identifikátor je 73.
10.3.2012 11:05 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Nechtěla. Funkci mysql_query() skoro nejde použít bezpečně (vaše použití je jeden z mála případů, kdy to bezpečné je, ale s tímhle těžko vystačíte). Proto jsou tu modernější řešení jako PDO nebo MySQLi, na která už jsem odkázal dávno. A ty odkazy vedou na dokumentaci PHP, kam je dobré se podívat předtím, než položíte dotaz na takhle triviální věc.
10.3.2012 13:05 Kit
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Někteří uživatelé prostě SQL nepotřebují a byli by mnohem spokojenější např. s databází DB4, která je skoro na každém hostingu, je rychlejší a netrpí na injection. Stačil by pak jeden příkaz:
$status=dba_fetch($rostlina.":status", $db_rostlinky);
Ve skutečnosti bych to sice udělal trochu odlišně, ale princip je snad jasný.
10.3.2012 14:52 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
s databází DB4, která je skoro na každém hostingu
Fakt? Ne že bych to nějak sledoval, ale nepamatuju si, že bych někdy narazil na hosting, který by DB4 nabízel.

Ale jinak souhlasím, že kdyby PHP webhostingy a návody vedly programátory v první řadě k použití nějakého úložiště objektů, svět by byl hned radostnější místo k životu pro spoustu programátorů, které teď někdo trápí relačními databázemi.
10.3.2012 20:42 Kit
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Buď je tam DB4, anebo GDBM, která je funkčně ekvivalentní. Jen místo B-stromu používá hašovací tabulku. Zatím jsem nenarazil na žádný freehosting, který by nepodporoval jednu nebo druhou databázi. Běžně zvládají 100-300k dotazů/s, MySQL obvykle jen 5-9k dotazů/s. Skvělé jsou například jako úložiště chybových hlášek, šablon, CSS, XSL apod.

Začal jsem používat tyto databáze i z toho důvodu, že jsou mnohem šetrnější na systémové prostředky serveru. Jejich nevýhodou je, že při zápisu se musí databáze otevřít exkluzivně. Ostatní musí chvilku počkat ve frontě. Ovšem v případě webů to obvykle nevadí a je jen stěží postřehnutelné.

Většina freehostingů nabízí rovněž databázi SQLite, která je výkonově někde mezi a netrpí popsaným neduhem. Při zápisu zamkne celou databázi dynamicky jen na dobu transakce, ostatní mohou mezitím číst. Navíc je na tom s podporou standardu SQL lépe než MySQL.
10.3.2012 20:49 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Asi každý myslíme něco jiného. Vy zřejmě to, že příslušná knihovna je nainstalovaná, je dostupná a dá se použít. Já jsem myslel to, že je to hostingem oficiálně podporovaná vlastnost, datové soubory se pravidelně zálohují (jako databáze) atd. Vy se asi řídíte výstupem phpinfo(), já jsem to bral podle toho, co má hosting napsáno na webu v tabulce podporovaných vlastností. Ale díky za tip, příště po tom budu pátrat i v tom phpinfo()...
10.3.2012 21:36 Kit
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
... že příslušná knihovna je nainstalovaná, je dostupná a dá se použít.
Správně. S tím, že na freehostingu je zálohování záležitostí webmastera. Ovšem na placeném hostingu jsou tyto databáze zálohovány společně se skripty. Nevidím tedy problém.

Ano, řídím se phpinfo(). Chvilku mi trvalo, než jsem přišel na to, jak to zprovoznit. Název databázového souboru musí být při otvírání uváděn s plnou cestou ve filesystému, jinak to nefunguje.

Ještě tam bývají databáze CDB, FLATFILE a INIFILE. Jsou výkonově slabší, ale také by se našlo použití:
  • CDB je konstantní (neměnná), ale hodně úsporná. Pro šablony a chybová hlášení jak stvořená.
  • INIFILE se dá pohodlně editovat běžným textovým editorem. Hodí se na zápis konfigurace zhruba do několika set až tisíc položek. Struktura je stejná jako u souborů INI ve Windows.
  • FLATFILE bych dnes už nepoužil, nevyniká v ničem.
Výhodou těchto databází je, že jich může být libovolné množství, limit je dán pouze velikostí úložného prostoru.
11.3.2012 08:04 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Ovšem na placeném hostingu jsou tyto databáze zálohovány společně se skripty.
Raději bych měl data zálohovaná zvlášť a aplikaci zvlášť.

Pořád je to takové řešení, které hosting sice nezakazuje, ale ani přímo nepodporuje. Přitom by to mohla podle mne být zajímavá konkurenční výhoda, a prakticky nic by to nestálo.
11.3.2012 09:00 Kit
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Raději bych měl data zálohovaná zvlášť a aplikaci zvlášť.
To chápu. Data se mění častěji. Ovšem pokud by to byla konstantní databáze (šablony, styly, chybová hlášení), tak je to jedno.
Pořád je to takové řešení, které hosting sice nezakazuje, ale ani přímo nepodporuje. Přitom by to mohla podle mne být zajímavá konkurenční výhoda, a prakticky nic by to nestálo.
Nejsou to SQL databáze, jsou to jen úložiště typu key->value. A to není populární. Vývojáři nad tím ohrnují nos. V případě INIFILE dokonce klíče nejsou indexovány, to je pro ně značně omezující třeba i pro 60 položek :-)

Místo toho i v populárních redakčních systémech nacházím už při inicializaci proměnných načítání kompletního seznamu chybových hlášení a šablon, které se použijí jednou za čas. To nutně zdržuje aplikaci. Proč to nedají do databáze? Protože s MySQL by to bylo pomalejší a jinou databázi neznají.

Některé hostingy v nabídce uvádí aspoň SQLite, ale vzhledem k tomu, že se jedná o poměrně neznámou databázi, vývojáři se jí bojí a stejně ji nepoužívají. Přitom je to velmi rozumný kompromis vhodný pro malé a střední projekty.
11.3.2012 16:09 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
No, asi je blázen ten, kdo se spolehne jen na zálohování hostingu.
Pokud je tam něco důležitějšího, tak si, aspoň jednodenní kopii, udržovat i někde jinde není k zahození.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
11.3.2012 16:27 Kit
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Svatá pravda. V případě důležitých dat se vyplatí i jejich kontinuální zálohování žurnálem na dalším stroji.
12.3.2012 08:12 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Nic takového jsem ale nepsal… Podle mne je jen riskantní používat funkci, s jejímž masovým použitím hosting moc nepočítá, a ukládat data někam, kde hosting očekává skripty.
12.3.2012 09:56 Kit
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Pokud jsou skripty na stejném stroji s PHP, tak v tom problém nevidím. S NFS by to bylo horší, ale u konstantních databází by to také nevadilo. To je vlastně hlavní použití souborových databází. Tam, kde je velmi časté čtení a jen občasná modifikace. Pro většinu webů ideální. Nákupní košík je však vhodnější nechat na SQL.
12.3.2012 11:10 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Však neříkám, že jste něco takového psal….
Myslím si že riskantní to není, protože hosting nemůže předpokládat jen skritpy (a ani nevím k čemu by takový předpoklad vedl), běžně se tam vyskytují další data i dynamicky tvořená, a rozdíl mezi takovýmito daty nebo nějakým DB souborem není žádný, snad jen u aktivního zápisu do DB souboru, ale tak můžete pracovat i s jinými soubory.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
12.3.2012 11:54 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Záleží třeba na rychlosti čtení vs. zápisu, způsob zálohování… Třeba u skriptů a konfiguračních souborů nebude problém udělat konzistentní zálohu, u databázového souboru už to může být komplikovanější.
12.3.2012 12:11 Kit
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Rychlost čtení a zápisu souborové databáze je typicky zhruba o jeden řád vyšší, než u síťové databáze, ale hlavní výhodou je nižší latence při čtení.

Konzistentní zálohy se i v případě souborových databází dělají exportem. Webmaster si je stejně musí dělat sám, na webhosting spoléhat nemůže.

Ovšem při typickém použití souborových databází na webu není nutné tyto databáze zálohovat, protože originály má webmaster u sebe a může je tam nahrát kdykoli znovu. Stejně jako není nutné zálohovat skripty.
9.3.2012 20:06 Kit
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Bez SELECTu z databáze SQL nic nenačteš. Proto tvůj dotaz moc nechápeme. Nejprve se musíš k databázi připojit, potom poslat dotaz a teprve pak si můžeš vyzvednout odpověď. Třeba takto:
$db = new PDO('mysql:host=xxx;dbname=xxx', $user, $pass);
$stmt = $db->prepare('SELECT status FROM rostlinky WHERE nazev=?;');
$stmt->execute(array('kopretina'));
$status = $stmt->fetchColumn();
Ale opakuji, že mi to připadá nesmyslné. K čemu ti je obsah samotné proměnné status? To postrádá logiku. Obvykle se vytáhne ještě třeba název, cena, dodavatel, množství apod. Tak, aby ses na to nemusela ptát následujícím dotazem, protože opakování SQL dotazů je drahé.
9.3.2012 20:13 Marie K.
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Co všichni s tím ovladačem PDO máte? :-) Všude samé PDO a když člověk hledá nějaké názorné příklady pro výpis dat, vložení dat, smazání dat, update dat, vložení do where atd tak google mlčí! Manuál na php.net je mi k ničemu, jelikož anglicky neumím a česky o tom nenajdu ani čárku. To jsou fce mysql_query() a s nimi související opravdu tak špatné? ? :-( Děkuji
9.3.2012 20:46 Kit
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Ano, funkce mysql_query() jsou špatné a pomalé.

U starých ovladačů je nutné ošetřovat vstupy proti SQL injection, což může někdy zdeformovat ukládaná data. PDO řeší spoustu neduhů zastaralého ovladače MySQL a přináší nové žádané vlastnosti, například výjimky. Parametrizované dotazy vypadají mnohem jednodušeji, protože je odstíněno vkládání parametrů a vstupních dat od SQL dotazu. PDO je také o něco rychlejší.

Google nemlčí, vše je zdokumentováno. Jiný materiál jsem neměl k dispozici, učil jsem se to podle toho. Nic jiného mi nezbývalo, když jsem chtěl používat databázi SQLite v.3, pro kterou se jiné ovladače než PDO nedělají.

Český návod jsem našel během pár sekund.
pavlix avatar 9.3.2012 21:04 pavlix | skóre: 53 | blog: pavlix
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Označuju jako řešení díky odkazu na český návod (dokonce prý nalezený během pár sekund).

Autorce dotazu bych rád vzkázal, že „na blbou otázku blbá odpověď“, a poprosil ji, ať si příště s napsáním dotazu dá trochu víc práce. Poradna na Abclinuxu je bezplatná komunitní poradna, tudíž se od tazatele očekává nemalá dávka spolupráce na řešení jeho problému.
GentooFedoraSCRAM – Jsem open source vývojář, nikoli markeťák ⇒ názory zde uvedené jsou jen mé vlastní.
25.3.2012 03:23 Dušan S.
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
$db = new PDO('mysql:host=xxx;dbname=xxx', $user, $pass);
$stmt = $db->prepare('SELECT status FROM rostlinky WHERE nazev=?;');
$stmt->execute(array('kopretina'));
$status = $stmt->fetchColumn();
Jak se tohle dá vypsat, pokud by dotaz vypadal takto?
SELECT status, name, lastname FROM rostlinky WHERE nazev=?;
Předpokládal jsem, že takto
echo $status['status'];
echo $status['name'];
echo $status['lastname'];
ale očividně je to nesmysl, dík
25.3.2012 08:16 Kit
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Zas takový nesmysl to není. Jen je potřeba nahradit metodu fetchColumn(), která je určena pro získání jednoho sloupce, např. metodou fetch(), která získá data ze všech dotazovaných sloupců.
25.3.2012 10:37 Dušan S.
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Aha, dík, a nemá být náhodou tohle

'SELECT status FROM rostlinky WHERE nazev=?;'

takhle

'SELECT status FROM rostlinky WHERE nazev=?'

25.3.2012 10:56 Kit
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
A proč? Každý SQL dotaz se ukončuje středníkem, je to ve specifikaci jazyka SQL. Když zapomeneš v příkazové řádce SQL středník, tak se dotaz neprovede a čeká na další znaky ze vstupu.

Je dobré si zvyknout na ukončování SQL dotazů středníkem i tam, kde je tolerována jeho absence. Není dobré se spoléhat na to, že to databázový ovladač v PHP za mne doplní. Jiný interpretr to umět nemusí.
25.3.2012 12:14 Dušan S.
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Tak to pak ano, pokud je tolerována absence středníku, řwší to to, že jsem to nikde neviděl, patrně na to 90 procent programátorů prdí ;) Ale mám ještě jeden dotaz, někde jsem tady narazal na poznámku, že do mysql se mají ukládat surová / neošetřená dat, pokud bych takový standard dodržel a opravdu uložil surová data do mysql, znamená to, že je musím ošetřit na vstupu, napadá mě, jestli by nešlo použít v tomto dotazu
$stmt = $db->prepare('SELECT id, status, name, lastname FROM rostlinky WHERE nazev=?;');
$stmt->execute(array('kopretina'));
$status = $stmt->fetch();
pro ošetření všech dat tohle?
$status = array_map('htmlspecialchars', $status);
nebo to musím ošetřit pro každý sloupec zvlášť?
$status['id']  = htmlspecialchars($status['id']);
$status['status']  = htmlspecialchars($status['status']);
$status['name']  = htmlspecialchars($status['name']);
$status['lastname']  = htmlspecialchars($status['lastname']);
díky
25.3.2012 12:16 Dušan S.
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
EDIT: samozřejmě že jsem myslel ošetření na výstupu ;)
25.3.2012 12:34 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Data na výstupu je potřeba ošetřit podle jejich významu a podle toho, kam je vypisujete. Třeba ID bude v databázi nejspíš nějaké číslo, takže ho nijak upravovat nebudete (nechcete, aby se třeba jako parametr v URL upravilo ID tak, že se tisíce oddělí mezerou). Ošetření byste měl dělat až při skutečném výstupu -- třeba to jméno můžete na jedné stránce použít v HTML kódu, v JavaScriptu i v URL, a pokaždé bude potřeba ošetřit ho jinak.
25.3.2012 13:41 Kit
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Použití array_map() je pro tento účel vhodnější, přehlednější a bude i rychlejší.

Ovšem méně vhodné je uložení výsledku do stejného pole. Když výsledek uložíš do jiného pole, paradoxně ušetříš trochu RAM i času a budeš mít k dipozici obě pole. V každém případě to bude přehlednější.

Ohledně "surových dat": Pokud má být výstupem HTML, je nutné znaky specifické pro HTML ošetřit až při výstupu. Kdyby to bylo v databázi, tak by se jiné výstupy než HTML musely zbytečně konvertovat zpět.
25.3.2012 21:04 Dušan S.
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
A mám ten zápis dobře? Nebo jsem zase vyplodil nějakou prasárnu :D Dík

$status = array_map('htmlspecialchars', $status);
25.3.2012 21:25 Kit
Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
Prasárnou je akorát to, že zdroj dat je v poli $status a výsledek opět v poli $status. To jsem ti však už napsal, že takhle se to nedělá.

Navíc zbytečně převádíš i položky, které by převedeny být neměly, např. 'id'. Ostatně netuším, k čemu tu položku vlastně potřebuješ.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.