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

včera 22:44 | Zajímavý článek

Tavis Ormandy popisuje, jak zprovoznil 32 let starý unixový port tabulkového procesoru Lotus 1-2-3 na moderním Linuxu. Doprovodné zdrojové kódy jsou na GitHubu.

Fluttershy, yay! | Komentářů: 1
včera 17:00 | Nová verze

Po pěti měsících vývoje od vydání verze 250 byla vydána nová verze 251 správce systému a služeb systemd (GitHub, NEWS).

Ladislav Hagara | Komentářů: 2
včera 15:44 | IT novinky

HP ve spolupráci se System76 představil 14" notebook HP Dev One s procesorem AMD Ryzen 7 PRO a předinstalovaným Pop!_OS Linuxem.

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

Byla vydána verze 1.61.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

Ladislav Hagara | Komentářů: 0
19.5. 00:33 | Zajímavý článek

Správce nástroje curl Daniel Stenberg na GitHubu průběžně vytváří svou novou knihu Uncurled, v níž shrnuje své dlouhodobé zkušenosti s údržbou open-source projektu: od odpozorovaných pouček po vtipné a ne až tak vtipné příklady e-mailů od uživatelů.

Fluttershy, yay! | Komentářů: 25
19.5. 00:22 | Nová verze

Byla vydána nová major verze 25.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Přehled novinek v příspěvku na blogu.

Ladislav Hagara | Komentářů: 4
19.5. 00:11 | Nová verze

Deno (Wikipedie), běhové prostředí (runtime) pro JavaScript a TypeScript, bylo vydáno ve verzi 1.22. Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
18.5. 18:22 | Nová verze

Společnost Red Hat oznámila vydání Red Hat Enterprise Linuxu (RHEL) 9.0. Vedle nových vlastností a oprav chyb přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 8
18.5. 14:00 | Komunita

Lars Knoll oznámil, že po 25 letech v ekosystému Qt, z toho 22 let pracující pro různé společnosti vlastnící Qt, odchází ze společnosti The Qt Company do malého norského startupu.

Ladislav Hagara | Komentářů: 8
18.5. 13:22 | Zajímavý projekt

Na Kickstarteru běží kampaň na podporu mini ITX desky Turing Pi 2 Cluster Computer. Vložením 4 výpočetních modulů, podporovány jsou Raspberry Pi 4, Turing RK1 a Nvidia Jetson, lze získat 4uzlový cluster. Cena desky je 219 dolarů.

Ladislav Hagara | Komentářů: 2
Na sociálních sítích nebo jiných webových diskuzích vystupuji pod
 (62%)
 (15%)
 (23%)
Celkem 317 hlasů
 Komentářů: 26, poslední 20.5. 15:03
Rozcestník


Dotaz: MySQL vlastnosti sloupce

9.5.2016 12:47 Milan Uhrák | skóre: 29 | blog: milan_at_ABC
MySQL vlastnosti sloupce
Přečteno: 1166×
Zdravíčko,

Mám takový podivný problém .. pro editaci záznamu z tabulky používám - mimo jiné - i údaje zjištěné pomocí
while ( $fieldinfo = $result->fetch_field(){....}

konkrétně mně zajímá hodnota FLAG NOT_NULL.

Pokud přidávám nový řádek, načítám "prázdný záznam" pomocí dotazu

$to_select => to jsou sloupce určené k editaci, $t=> jméno tabulky
$query = 'SELECT '.$to_select.' FROM (SELECT 1) AS ignore_me LEFT JOIN '.$t.' ON 1 LIMIT 1';
Tento zápis je netriviální proto, že jsem nenašel rozumný způsob, (je lepší ?) jak ošetřit vkládání prvního řádku do prázdné tabulky ... takto mám k dispozici sloupce tabulky vždy, mají správné atributy, které mohu při editaci použít k nastavení INPUT polí ... ale hodnota flagu NOT_NULL se ztratí ... je vždy FALSE

mohu to vyřešit tak, že nejprve testnu, zda má tabulka nějaké řádky "SELECT COUNT(ID) .... " , a pokud ano, pak načíst první řádek tabulky, fetchnout vlastnosti, vymazat hodnoty a předhodit k editaci. Nicméně problém prvního řádku zůstává.

Editace již existujícího záznamu, který vytahuju normálním SELECTem, bez těch ošklivin okolo NOT_NULL zachová.

Takže, co nechápu, proč nyní používaný způsob nezachová atribut NOT_NULL a zda to nejde ošetřit elegantněji než mnou naznačené řešení.

Děkuji předem za nakopnutí.

Řešení dotazu:


Odpovědi

Řešení 1× (Milan Uhrák (tazatel))
9.5.2016 14:18 Filip Jirsák
Rozbalit Rozbalit vše Re: MySQL vlastnosti sloupce
Zkusil bych použít mysqli_stmt_result_metadata. A nebo načítat metadata přímo ze systémových tabulek. U toho vašeho LEFT JOINu je logické, že se NOT NULL „ztratí“ – hodnoty vrácené z té pravé tabulky přece mohou být NULL.
Řešení 1× (Milan Uhrák (tazatel))
Josef Kufner avatar 9.5.2016 14:20 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: MySQL vlastnosti sloupce
Šmankote, co to děláš za šílenost?

Jsou dvě možnosti, jak zjistit sloupce tabulky.
  1. Načíst si informace pomocí SHOW COLUMNS a podobných dotazů (nebo z information_schema, ale na to se vybodni).
  2. Udělat SELECT * FROM tabulka LIMIT 0 a pomocí PDOStatement::getColumnMeta() si vytáhnout metadata o každém sloupci (počet sloupců získáš pomocí PDOStatement::columnCount()).
To první ti dá detailnější informace, to druhé je výrazně rychlejší a při troše štěstí to stačí (NOT NULL tam je).
Hello world ! Segmentation fault (core dumped)
9.5.2016 16:55 Milan Uhrák | skóre: 29 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: MySQL vlastnosti sloupce
Tak oběma děkuji za zajímavé náměty .. no jinak to prostě neumím, tak jsem to napsal tak, jak jsem vygooglil ...

Zkusím a zhodnotím .. jo a PDO nepoužívám, jen Mysqli .. ten LIMIT 0 vypadá slibně
Josef Kufner avatar 9.5.2016 17:07 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: MySQL vlastnosti sloupce
PDO používej, je to hezké, moderní a slušně navržené API, které funguje na mnoha databázích a ušetří ti to spousty starostí.
Hello world ! Segmentation fault (core dumped)
9.5.2016 17:51 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: MySQL vlastnosti sloupce
Také se přimlouvám za PDO. Má spoustu příjemných vychytávek, například oproti MySQLi má lépe vyřešeny Prepared Statements - metoda bindParam(), která mě tak prudila, se stala prakticky zbytečnou.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
9.5.2016 20:02 Milan Uhrák | skóre: 29 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: MySQL vlastnosti sloupce
No .. mám nad Mysqli takovou vlastní nadstavbu, a jsem s tím spokojen, alespoň co se týče mého "stylu" programování.

"LIMIT 0" funguje bezvadně, jen s drobnou úpravou okolního kódu, paráda, oběma díky

Mně předtím prostý SELECT .. LIMIT 1 vlastně nevracel nic, a nevěděl jsem, jak z toho "nic" uvařit ty inputy .. pak jsem někde našel to použité řešení .. už to bylo lepší, ale pořád to zlobilo. NOT_NULL používám k "přibarvení" pozadí vstupu, a kontrole před odesláním, jestli není prázdné ... a u nových vět to pochopitelně nefungovalo. Tohle je úplně profi ..

M.

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.