Zadejte hledaný výraz...

Mysql sloupce a vypsání

Richard Hutta
verified
rating uzivatele
(1 hodnocení)
26. 8. 2011 12:20:01
Dobrý den,
měl bych na zdejší odborníky menší dotaz. Potřeboval bych dostat názvy sloupců do tvaru
sloupec1,sloupec2,sloupec3, atd... jenže jsem narazil na problém...
použil jsem tento kód:
dok = mysql_query("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = '".$table."'") or die( mysql_error());
$dok2 = mysql_fetch_array($dok);
problém spočívá v tom, že array je pro každý sloupec zvlášť tudíž nemůžu použít implode a dosáhnout tvaru sloupec1,sloupec2,sloupec3, atd...
nevíte někdo jak na to ?
26. 8. 2011 12:20:01
https://webtrh.cz/diskuse/mysql-sloupce-a-vypsani#reply670828
hm
verified
rating uzivatele
(20 hodnocení)
26. 8. 2011 12:24:11
projed array, pretransformuj si data jak potrebujes a treba pouzij implode nebo to v podstate muzes implodovat primo pri tom projizdeni - takze
mozna to jde udelat i trochu jinak, mozna trochu ucineji, ale chapes, vystup je proste delan z DB takhle takze si musis poradit a tohle je podle me schudne
26. 8. 2011 12:24:11
https://webtrh.cz/diskuse/mysql-sloupce-a-vypsani#reply670827
Richard Hutta
verified
rating uzivatele
(1 hodnocení)
26. 8. 2011 12:44:52
Jsem vůl :D díky, máš u mě +1. A myslím že je to celkem elegantní řešení.
Každopádně se chci podělit o jednu velice šikovnou funkci, původně od tohoto autora.
zkušenější jiste poznaj o co de..
function backup_tables($host,$user,$pass,$name,$tables = '*')
{
$link = mysql_connect($host,$user,$pass);
mysql_select_db($name,$link);
if($tables == '*')
{
$tables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result))
{
$tables[] = $row;
}
}
else
{
$tables = is_array($tables) ? $tables : explode(',',$tables);
}
foreach($tables as $table)
{
$result = mysql_query('SELECT * FROM '.$table);
$num_fields = mysql_num_fields($result);
$return.= 'DROP TABLE IF EXISTS '.$table.';';
$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
$return.= "nn".$row2.";nn";
$dok = mysql_query("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = '".$table."'") or die( mysql_error());
$string = '';
$x = 0;
while($row=mysql_fetch_array($dok)){
$x++;
$string .= (($x>1)?',':'').$row;
}
for ($i = 0; $i < $num_fields; $i++)
{
while($row = mysql_fetch_row($result))
{
$return.= 'INSERT INTO '.$table.' ('.$string.') VALUES(';
for($j=0; $j<$num_fields; $j++)
{
$row = addslashes($row);
$row = ereg_replace("n","\n",$row);
if (isset($row)) { $return.= '"'.$row.'"' ; } else { $return.= '""'; }
if ($j<($num_fields-1)) { $return.= ','; }
}
$return.= ");n";
}
}
$return.="nnn";
}
$server = $_SERVER;
$obsah = str_replace($server, $_GET, $return);
$handle = fopen('db-backup.sql','w+');
fwrite($handle,$obsah);
fclose($handle);
}
26. 8. 2011 12:44:52
https://webtrh.cz/diskuse/mysql-sloupce-a-vypsani#reply670826
sysline
verified
rating uzivatele
(2 hodnocení)
26. 8. 2011 12:48:47
Mno, chapu co tim kodem chces rict, ale tohle by pouzil jen sebevrah :)
26. 8. 2011 12:48:47
https://webtrh.cz/diskuse/mysql-sloupce-a-vypsani#reply670825
hm
verified
rating uzivatele
(20 hodnocení)
26. 8. 2011 12:51:22
Napsal sysline;694110
Mno, chapu co tim kodem chces rict, ale tohle by pouzil jen sebevrah :)
taky bych to resil jinak hlavne vubec nepouzivam mysql fce nybrz dibi, pdo nebo classy z kohany... ale tak tezko to vysvetlovat nekomu kdo to ted potrebuje udelat a ted hned nema cas ucit se novy styl prace a prespisovat to vse :)
26. 8. 2011 12:51:22
https://webtrh.cz/diskuse/mysql-sloupce-a-vypsani#reply670824
Richard Hutta
verified
rating uzivatele
(1 hodnocení)
26. 8. 2011 13:03:30
Jseš trošku vedle, mam trošku problém s mysql fce, protože už od začátku jsem se učil pracovat s dibi layer. Ikdyž toto byla otázka spíše samotného php. Dalo by jse říci že dibi ovládam velmi dobře a jelikož nyní potřebuju jen jeden soubor, myslím, že toto bylo nejlepší řešení. Jo jinak omlouvám jse v kódu jsem nechal pár drobností pro testování jako jsou get promněné, ale s tímto jsi zajisté určitě poradíte :)
26. 8. 2011 13:03:30
https://webtrh.cz/diskuse/mysql-sloupce-a-vypsani#reply670823
sysline
verified
rating uzivatele
(2 hodnocení)
26. 8. 2011 13:09:46
To neni ani tak o tom, jakou knihovnu pouzit pro komunikaci s databazi, jako spis o tom, jestli ses zamyslel nad tim, co se stane napriklad pokud v te databazi budou tabulky s foreigen keys nebo pokud ta databaze bude obsahlejsi.
26. 8. 2011 13:09:46
https://webtrh.cz/diskuse/mysql-sloupce-a-vypsani#reply670822
Richard Hutta
verified
rating uzivatele
(1 hodnocení)
26. 8. 2011 13:19:32
To neni ani tak o tom, jakou knihovnu pouzit pro komunikaci s databazi, jako spis o tom, jestli ses zamyslel nad tim, co se stane napriklad pokud v te databazi budou tabulky s foreigen keys nebo pokud ta databaze bude obsahlejsi.
nebo pokud jse budu chtít vyhnout sql injekci nebo si usnadnit práci nebo dalších tisíce jinejch důvodů proč používat nástavbu. Důvod proč jsem začal používat dibi layer byl to že jsem mohl pro komunikaci s db použít array vyhnul jsem se tomu, že jsem nemusel ošetřovat vstupy a jiné. Ovšem krapet nechápu proč tvrdíš že script opár příspěvků výše je to sebevražda ?
26. 8. 2011 13:19:32
https://webtrh.cz/diskuse/mysql-sloupce-a-vypsani#reply670821
sysline
verified
rating uzivatele
(2 hodnocení)
26. 8. 2011 13:27:52
Vsak jsem vysvetleni podal v predchozim prispevku. Ja ted nemluvim o kvalite toho kodu nebo bezpecnostni.Ale o tom, ze ve chvili kdy budes mit databazi, ktera je obsahla nebo bude obsahovat tabulky s FK, tak timhle skritem jednodusse pretizis server za urcitych okolnosti pripadne v lepsim pripade dostanes sql soubor kterej ti k nicemu nebude v tom horsim pripade pri pokusu o zpetny import si dropnes tabulky, ktere uz zpatky nenaimportujes.
Tahle funkce ti muze poslouzit jako berlicka za predpokladu ze nemas ani phpmysqladmin, ani mysql workbench ani pimy pristup k databazi, tvoje databaze obsahuje par tabulek s par daty, zadne FK atd atd.. To znamena, v 99,9% pripadu mas vzdy lepsi, rychlejsi a sofistikovanejsi volbu nez tuto funkci a pokud jsi v om 00.1% pripadu, tak delas neco spatne :)
Mnou zminene potencionalni problemy jsou jen vrcholek ledovce, tech otazek a problemu souvisejici s podobnym pokusem o export je tam dalsi celkem obsahla rada. Proste toto neni smer, kudy by ses mel ubirat...
26. 8. 2011 13:27:52
https://webtrh.cz/diskuse/mysql-sloupce-a-vypsani#reply670820
Richard Hutta
verified
rating uzivatele
(1 hodnocení)
26. 8. 2011 13:37:13
No má to bejt více zatěžovná aplikace, myslíte že by jste mě mohli poradit ajk bych to měl zdokonalit tak aby to nevyřadilo serverz provozu ? :D
26. 8. 2011 13:37:13
https://webtrh.cz/diskuse/mysql-sloupce-a-vypsani#reply670819
sysline
verified
rating uzivatele
(2 hodnocení)
26. 8. 2011 13:40:38
To zalezi na okolnostech a na duvodech proc ten export chces delat. Pokud jsi v pozici ze potrebujes napriklad delat nejaky automaticky backup a nutne to chces delat pres tvoji aplikaci, tak je mnohem mnohem rozumnejsi udelat se jednoduchej php script, kterej ti zavola klasicky mysqldump jako command.
Popsano je to tady napriklad http://webtvorba.howto.cz/zaloha-dump-mysql-databaze-v-php/
Kod v uvadenem zdroji, taky neni ani zdaleka idealni uz jen pro to, ze napriklad obsah neni potreba zapisovat do souboru pres php, mysqldump to umi primo, ale je to rozhodne lepsi cesta nez ta funkce o ktere se tu bavime :)
26. 8. 2011 13:40:38
https://webtrh.cz/diskuse/mysql-sloupce-a-vypsani#reply670818
Richard Hutta
verified
rating uzivatele
(1 hodnocení)
26. 8. 2011 13:45:11
ano, jedná jse o automatickou zálohu, mělo by to sloužit třeba k zálohování wordpress db. Mysql dump jsem slyšel ovšem nikde jsm nenalezl nějaké rozumně řešení které by jse dalo upravit..
26. 8. 2011 13:45:11
https://webtrh.cz/diskuse/mysql-sloupce-a-vypsani#reply670817
Pro odpověď se přihlašte.
Přihlásit