PHP и MySQL: Извоз на пребарување во ограничена датотека со јазиче

MySQL PHP логоа

Овој викенд сакав да изградам страница што едноставно ќе прави резервна копија од секое барање или табела во датотека со ограничена картичка. Повеќето примери од мрежата ги имаат колоните тврдо кодирани.

Во мојот случај, сакав колоните да бидат динамични, па морав прво да ги прелистам сите имиња на полињата во табелата за да го изградам заглавието со имиња на колони, а потоа да ги прегледам сите записи за преостанатите редови на податоци. Исто така, го поставив заглавието така што прелистувачот ќе иницира преземање на датотеката во типот на датотека (txt) со името на датумот на датотеката и означен со временски ознаки.

Ја оставив отворена и затворачка врска со базата на податоци, но еве го кодот што резултираше и функционираше доста добро:

$ денес = датум ("YmdHi");
заглавие ("Тип на содржина: апликација / октет-поток");
заглавие ("Содржина-диспозиција: прилог; име на датотека = \" ". $ денес." _ Backup.txt \ "");
$ query = "Избери * ОД нарачката` mytable` според `myorder`;
$ резултат = mysql_query ($ пребарување);
$ count = mysql_num_rows ($ резултат);
$ полиња = mysql_num_fields ($ резултат);
$ data = "";
за ($ i = 0; $ i> $ полиња; $ i ++) {
$ поле = mysql_fetch_field ($ резултат, $ i);
$ податоци. = $ поле-> име;
$ податоци. = "\ t";
}
$ податоци. = "\ n";
додека ($ row = mysql_fetch_row ($ резултат)) {
за ($ x = 0; $ x> $ полиња; $ x ++) {
$ поле-> име = $ ред [$ x];
$ податоци. = $ поле-> име = $ ред [$ x];
$ податоци. = "\ t";
}
$ податоци. = "\ n";
}
ехо $ податоци;

Кодот може лесно да се модифицира и за вредностите одделени со запирка.

14 Коментари

  1. 1
    • 2

      Претпоставувам дека можеше!

      Во овој случај, јас всушност градев „резервна копија“ врска во веб-апликација, така што функционалноста на PHP е она што ми требаше. Сепак, никогаш не знаев дека исто така можете да напишете во датотека директно од изјавата MySQL. Многу кул!

      Ви благодариме!

      • 3

        Вашиот начин секако би бил најдобриот начин доколку MySQL серверот е на далечинска машина, бидејќи веројатно не би можел да пишува на машината каде работи PHP

        Мило ми е што укажувам на други насоки и нови работи иако

      • 4

        Но, можете само да го извршите барањето до датотека и само да го пренасочите прелистувачот кон генерираната датотека или да користите „readfile“ на PHP ако сè друго не успее?

        Нема да можете да го сторите тоа ако серверот mysql нема пристап до датотечниот систем секако

  2. 5

    Одличен пост. Дали знаете за лесен, бесплатен / отворен извор метод за увоз / враќање на ограничена датотека со датотеки (како што штотуку создадовте) назад во mysql db?

    • 6

      Грешка… mysqlimport?

      mysqlimport database_name --local backup.txt

      Или со командата SQL:

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

      Со mysqlimport, името на датотеката треба да одговара на името на табелата (само нешто за кое треба да внимавате)

    • 7
  3. 8

    Само што изгубив повеќе од 6 часа од мојот живот, обидувајќи се да разберам зошто Internet Explorer 6/7 применуваше тип на датотека 'html' и не ги прифаќаше моите сопствени имиња на датотеки наведени во заглавјата .. а исто така не дозволуваше зачувување на датотеките .. кога обидувајќи се корисниците да преземаат текстуални датотеки создадени на сличен начин како горе.

    Користев HTTPS и IE не ги зачувува овие датотеки.

    Решението го најдов на коментар на Брендон К на http://uk.php.net/header.

    Тој вели:

    -
    Само што изгубив шест часа од мојот живот обидувајќи се да го искористам следниов метод за да испратам PDF-датотека преку PHP до Internet Explorer 6:

    Кога користите SSL, Internet Explorer ќе поттикне со дијалогот Отвори / зачувај, но потоа вели: „Датотеката во моментов е недостапна или не може да се најде. Ве молиме, обидете се подоцна “. По долго пребарување, станав свесен за следниов напис на MSKB со наслов „Преземањата на датотеки Интернет експлорер преку SSL не работат со заглавјата на контролната меморија“ (KBID: 323308)

    PHP.INI по дифолт користи поставка: session.cache_limiter = nocache што ги модифицира Content-Cache и Pragma заглавјата да вклучува опции „nocache“. Можете да ја елиминирате грешката на IE со промена на „нокаш“ во „јавно“ или „приватно“ во PHP.INI - Ова ќе го смени заглавието за содржина-кеш, како и целосно отстранување на заглавието Прагма. Ако не можете или не сакате да го измените PHP.INI за поправка на целата страница, можете да ги испратите следниве два наслови за да ги пребришете стандардните вредности:

    Сè уште ќе треба да ги поставите заглавјата на содржините наведени погоре за да може ова да работи. Забележете го овој проблем САМО влијае на Internet Explorer, додека Firefox не го покажува ова погрешно однесување.
    -

    Па .. барем изгуби само 6 часа

  4. 9

    Ова работи добро. Сепак, јас добивам сè на една линија, одделено со празно место. Се обидувам да го модифицирам за да отпечатам сè на посебна линија како оваа:

    Име на колоната1
    Field1_вредност
    Име на колоната2
    Field1_вредност
    Име на колоната3
    Field1_вредност

    Име на колоната1
    Field2_вредност
    Име на колоната2
    Field2_вредност
    Име на колоната3
    Field2_вредност

    На пример:

    Име
    Мајк
    Локација
    работа
    Број
    1

    Име
    Тужи
    Локација
    Почетна
    Број
    2

    Име
    Џон
    Локација
    Патуваат
    Број
    10

    и така натаму. Може ли оваа скрипта да се измени за да се направи тоа?
    Ви благодариме!

    • 10

      Сигурно може.

      Пробајте вакво нешто:

      ИЗБЕРЕТЕ * од MyTableName ВО ИЗЛОНОСТ 'MyTableName_MySQL-TAB-DELIMITED-29JUN08.txt' ТЕЛИ ТЕРМИНИРАНИ СО '\ n' ЛИНИИ ТЕРМИНИРАНИ ОД '\ n';

      Ако сакате двоен простор (две празни линии) помеѓу рекордните групи, само кажете „ЛИНИИ ТЕРМИНИРАНИ ОД '\ n \ n';” наместо тоа.

      Делот „FIELDS TERMINATED BY '\ n” е она што поставува нова линија по секој запис, наместо јазиче. Наместо тоа, јазичето ќе биде "\ t".

      Мараната!

  5. 11

    ова е пркосно одличен пост, го пробав и работам одлично, единственото нешто е што мојата txt-датотека има дополнителен ред над насловите на заглавието, а некои резултати се разделени во 2 реда, ова може да биде причина за податоците што ги имам во мојата база на податоци немам идеја, но ова е голема помош за изградба на гасови

  6. 12

    Douglas Karr вашиот код навистина се лупи! Многу е корисно специјално ако само ви треба излез што е во формат на датотека со текст. Благодарам многу! Од тимот Филипини!

  7. 13

    Здраво! Дали има некој од тука што може да ми даде навестување за увоз на текстуална датотека во мојата база на податоци (phpmyAdmin) користејќи го мојот php како мој преден дел. Имам идеја за преземање датотека и нејзино отворање, мојот проблем е што можам да добијам резултат од редот и како да го вметнам во табелите, благодарам

  8. 14

    Ве молам, може некој да ми каже како да го отстранам редот заглавие http над насловите на заглавието

Што мислите?

Оваа страница користи Akismet за намалување на спам. Научете како се обработува вашиот коментар.