PHP og MySQL: Flytja út fyrirspurn á flipa afmarkaða skrá

mysql php lógó

Um helgina langaði mig að byggja upp síðu sem myndi einfaldlega taka öryggisafrit af öllum fyrirspurnum eða töflu í flipaskilnaða skrá. Flest dæmin á netinu hafa dálkana harða kóða.

Í mínu tilfelli vildi ég að dálkarnir yrðu kraftmiklir þannig að ég þurfti fyrst að lykkja í gegnum öll borðheitanöfnin til að byggja hausaröðina með dálkaheitum og síðan lykkja í gegnum allar skrár fyrir þær gagnalínur sem eftir voru. Ég stilli einnig hausinn þannig að vafrinn hefji niðurhal skráar í skráargerð (txt) með nafni skráardagsetningar og tímastimplað.

Ég útilokaði gagnagrunninn opinn og lokunartengingu, en hérna er kóðinn sem myndaðist sem virkaði nokkuð vel:

$ í dag = dagsetning ("YmdHi");
haus („Content-type: application / octet-stream“);
haus ("Content-Disposition: attachment; filename = \" ". $ í dag." _ Backup.txt \ "");
$ query = "SELECT * FROM` mytable` order by `myorder`";
$ útkoma = mysql_query ($ fyrirspurn);
$ count = mysql_num_rows ($ niðurstaða);
$ field = mysql_num_fields ($ niðurstaða);
$ data = "";
fyrir ($ i = 0; $ i> $ reiti; $ i ++) {
$ field = mysql_fetch_field ($ niðurstaða, $ i);
$ gögn. = $ field-> nafn;
$ gögn. = "\ t";
}
$ gögn. = "\ n";
meðan ($ röð = mysql_fetch_row ($ niðurstaða)) {
fyrir ($ x = 0; $ x> $ reiti; $ x ++) {
$ field-> name = $ row [$ x];
$ gögn. = $ field-> name = $ row [$ x];
$ gögn. = "\ t";
}
$ gögn. = "\ n";
}
bergmál $ gögn;

Auðvelt er að breyta kóðanum fyrir kommu aðskilin gildi líka.

14 Comments

  1. 1
    • 2

      Ég geri ráð fyrir að þú gætir!

      Í þessu tilfelli var ég í raun að byggja upp „varabúnaðartengil“ í vefforritinu, svo að PHP virkni er það sem ég þurfti. Ég vissi samt aldrei að þú gætir líka skrifað í skrá beint úr MySQL yfirlýsingunni. Mjög flott!

      Takk!

      • 3

        Leið þín væri auðvitað besta leiðin ef MySQL netþjónninn er á ytri vél, þar sem hann myndi líklega ekki geta skrifað á vélina þar sem PHP er í gangi 🙂

        Feginn að benda á aðrar áttir og nýja hluti þó 🙂

      • 4

        En þú gætir bara keyrt fyrirspurnina í skrá, og bara vísað vafranum á myndaða skrá, eða notað „readfile“ PHP ef allt annað bregst?

        Þú munt ekki geta gert það ef mysql netþjónninn hefur auðvitað ekki aðgang að skráarkerfinu ...

  2. 5

    Frábær færsla. Veistu um auðvelda, ókeypis / opinn uppsprettu aðferð til að flytja inn / endurheimta flipa afmarkaða skrá (eins og þú varst að búa til) aftur í mysql db?

    • 6

      Errr ... mysqlimport?

      mysqlimport database_name --local backup.txt

      Eða með SQL skipuninni:

      LOAD DATA LOCAL INFILE 'backup.txt' INTO TABLE `my_table` FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'

      Með mysqlimport þarf skráarheitið að passa við töfluheitið (bara eitthvað til að varast)

    • 7
  3. 8

    Ég missti meira en 6 klukkustundir af lífi mínu við að reyna að komast að því hvers vegna Internet Explorer 6/7 var að nota filetype 'html' og samþykkti ekki sérsniðnu skráarnafnin mín sem tilgreind eru í hausnum .. og leyfði heldur ekki að vista skrár .. að reyna að láta notendur hlaða niður textaskrám búnum til á svipaðan hátt og að ofan.

    Ég var að nota HTTPS og IE skyndiminni ekki þessar skrár.

    Ég fann lausnina á athugasemd Brandon K kl http://uk.php.net/header.

    Segir hann:

    -
    Ég tapaði rétt sex klukkustundum af lífi mínu við að reyna að nota eftirfarandi aðferð til að senda PDF skrá í gegnum PHP á Internet Explorer 6:

    Þegar SSL er notað mun Internet Explorer biðja um Opna / vista gluggan, en segir síðan „Skráin er sem stendur ekki tiltæk eða finnst ekki. Vinsamlegast reyndu aftur síðar." Eftir mikla leit varð ég vör við eftirfarandi MSKB grein sem bar yfirskriftina „Internet Explorer skráarhal yfir SSL virka ekki með skyndiminnistjórnarhausum“ (KBID: 323308)

    PHP.INI notar sjálfgefið stillingu: session.cache_limiter = nocache sem breytir Content-Cache og Pragma hausum til að fela í sér „nocache“ valkosti. Þú getur útrýmt IE villunni með því að breyta „nocache“ í „public“ eða „private“ í PHP.INI - Þetta mun breyta Content-Cache hausnum auk þess að fjarlægja Pragma hausinn. Ef þú getur ekki eða vilt ekki breyta PHP.INI fyrir staðbundna lagfæringu geturðu sent eftirfarandi tvö haus til að skrifa um vanskil:

    Þú verður samt að stilla efnishausana eins og taldir eru upp hér að ofan til að þetta virki. Vinsamlegast athugaðu þetta vandamál hefur AÐEINS áhrif á Internet Explorer á meðan Firefox sýnir ekki þessa gölluðu hegðun.
    -

    Jæja .. að minnsta kosti tapaði hann aðeins 6 klukkustundum ...

  4. 9

    Þetta virkar vel. Hins vegar fæ ég bara allt á einni línu aðskilið með bili. Ég er að reyna að breyta því til að prenta allt á sérstakri línu svona:

    Dálkur1_heiti
    Reitur1_gildi
    Dálkur2_heiti
    Reitur1_gildi
    Dálkur3_heiti
    Reitur1_gildi

    Dálkur1_heiti
    Reitur2_gildi
    Dálkur2_heiti
    Reitur2_gildi
    Dálkur3_heiti
    Reitur2_gildi

    Til dæmis:

    heiti
    Mike
    Staðsetning
    Vinna
    Númer
    1

    heiti
    Sue
    Staðsetning
    Heim
    Númer
    2

    heiti
    John
    Staðsetning
    ferðalög
    Númer
    10

    og svo framvegis. Er hægt að breyta þessu handriti til að gera það?
    Takk!

    • 10

      Jú getur.

      Prófaðu eitthvað svona:

      VELJA * úr MyTableName INTO OUTFILE 'MyTableName_MySQL-TAB-DELIMITED-29JUN08.txt' SVÖÐ UMHÆTT MEÐ '\ n' LÍNUR SEM ERA AFGERÐ með '\ n';

      Ef þú vilt tvöfalt bil (tvær tómar línur) á milli hljómplötuhópa, segðu bara „LÍNUR HÆTTAR af '\ n \ n';“ í staðinn.

      Hlutinn „SJÖLVARÐ HÆTT AF '\ n'" er það sem setur nýlínu á eftir hverri skrá, í stað flipa. Flipi væri '\ t' í staðinn.

      Maranatha!

  5. 11

    þetta er ögrandi frábært innlegg, ég reyndi það og vinnur frábærlega, eina málið er að txt skráin mín er með auka röð fyrir ofan titil hausanna og sumar niðurstöður eru aðgreindar í 2 línum, þetta kann að vera orsakað af gögnum sem ég hef í gagnagrunninum mínum ekki hugmynd, en þetta er frábær hjálp við að byggja upp strauma ...

  6. 12

    Douglas Karr kóðinn þinn rokkar virkilega! Það er mjög gagnlegt sérstaklega ef þú þarft bara framleiðslu sem er á textaskráarsniði. Kærar þakkir! Frá liði Filippseyja!

  7. 13

    Hæ! Er einhver héðan sem getur gefið mér vísbendingu um innflutning á textaskrá í gagnagrunninn minn (phpmyAdmin) með því að nota php minn sem framendann. Ég hef hugmynd um að hlaða niður skrá og opna hana, vandamálið mitt er að hvernig ég get fengið niðurstöðuna og hvernig ég set hana í töflurnar mínar, takk

  8. 14

Hvað finnst þér?

Þessi síða notar Akismet til að draga úr ruslpósti. Lærðu hvernig ummæli þín eru unnin.