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í
×

dnes 16:00 | Bezpečnostní upozornění

Ve správci systému a služeb systemd, konkrétně v systemd-resolved, byla nalezena bezpečnostní chyba CVE-2017-9445. Útočník může vzdáleně shodit server nebo spustit libovolný příkaz.

Ladislav Hagara | Komentářů: 5
včera 11:33 | Pozvánky

Konference LinuxDays 2017 proběhne o víkendu 7. a 8. října v Praze v Dejvicích v prostorách FIT ČVUT. Konference OpenAlt 2017 proběhne o víkendu 4. a 5. listopadu na FIT VUT v Brně. Organizátoři konferencí vyhlásili CFP (LinuxDays, OpenAlt). Přihlaste svou přednášku nebo doporučte konference známým.

Ladislav Hagara | Komentářů: 1
včera 06:00 | Nová verze

Byla vydána verze 1.3.0 odlehčeného desktopového prostředí Lumina (Wikipedie, GitHub) postaveného nad toolkitem Qt. Z novinek lze zmínit nový motiv ikon nahrazující Oxygen (material-design-[light/dark]) nebo vlastní multimediální přehrávač (lumina-mediaplayer).

Ladislav Hagara | Komentářů: 2
26.6. 17:33 | Bezpečnostní upozornění

Před šesti týdny byly publikovány výsledky bezpečnostního auditu zdrojových kódů OpenVPN a nalezené bezpečnostní chyby byly opraveny ve verzi OpenVPN 2.4.2. Guido Vranken minulý týden oznámil, že v OpenVPN nalezl další čtyři bezpečnostní chyby (CVE-2017-7520, CVE-2017-7521, CVE-2017-7522 a CVE-2017-7508). Nejzávažnější z nich se týká způsobu, jakým aplikace zachází s SSL certifikáty. Vzdálený útočník může pomocí speciálně

… více »
Ladislav Hagara | Komentářů: 1
26.6. 06:55 | Zajímavý projekt

V Edici CZ.NIC vyšla kniha Průvodce labyrintem algoritmů. Kniha je ke stažení zcela zdarma (pdf) nebo lze objednat tištěnou verzi za 339 Kč (připojení přes IPv4) nebo 289 Kč (připojení přes IPv6).

Ladislav Hagara | Komentářů: 9
26.6. 06:33 | Zajímavý software

Byla vydána verze 2.2.0 svobodného správce hesel KeePassXC (Wikipedie). Jedná se o komunitní fork správce hesel KeePassX s řadou vylepšení.

Ladislav Hagara | Komentářů: 0
26.6. 06:11 | IT novinky

Vývojář Debianu Henrique de Moraes Holschuh upozorňuje v diskusním listu debian-devel na chybu v Hyper-Threadingu v procesorech Skylake a Kaby Lake od Intelu. Za určitých okolností může chyba způsobit nepředvídatelné chování systému. Doporučuje se aktualizace mikrokódu CPU nebo vypnutí Hyper-Threadingu v BIOSu nebo UEFI [reddit].

Ladislav Hagara | Komentářů: 0
24.6. 01:23 | Komunita

Phoronix spustil 2017 Linux Laptop Survey. Tento dotazník s otázkami zaměřenými na parametry ideálního notebooku s Linuxem lze vyplnit do 6. července.

Ladislav Hagara | Komentářů: 3
23.6. 22:44 | Nová verze

Po třech měsících vývoje od vydání verze 5.5.0 byla vydána verze 5.6.0 správce digitálních fotografií digiKam (digiKam Software Collection). Do digiKamu se mimo jiné vrátila HTML galerie a nástroj pro vytváření videa z fotografií. V Bugzille bylo uzavřeno více než 81 záznamů.

Ladislav Hagara | Komentářů: 1
23.6. 17:44 | Nová verze

Byla vydána verze 9.3 open source alternativy GitHubu, tj. softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech, GitLab. Představení nových vlastností v příspěvku na blogu a na YouTube.

Ladislav Hagara | Komentářů: 3
Chystáte se pořídit CPU AMD Ryzen?
 (7%)
 (31%)
 (1%)
 (9%)
 (44%)
 (9%)
Celkem 855 hlasů
 Komentářů: 65, poslední 1.6. 19:16
    Rozcestník

    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: 2370×
    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: 54 | 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.
    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: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Jak vypsat jeden jediný údaj z mysql
    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: 67
    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: 54 | 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.
    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.