PHP و MySQL: صادر کردن یک کوئری به یک فایل محدود شده در برگه

آرم های mysql php

این آخر هفته می خواستم صفحه ای بسازم که به راحتی از هرگونه پرسش یا جدول در یک فایل Tab Delached پشتیبان تهیه کند. اکثر نمونه های موجود در شبکه ستون ها کدگذاری سخت دارند.

در مورد من ، من می خواستم که ستون ها پویا باشند ، بنابراین مجبور شدم ابتدا تمام نام های زمینه جدول را حلقه کنم تا ردیف هدر را با نام ستون ها بسازم ، و سپس تمام رکوردها را برای ردیف های داده باقیمانده حلقه کنم. من همچنین هدر را تنظیم کردم تا مرورگر شروع به بارگیری پرونده در نوع پرونده (txt) با نام تاریخ پرونده و مهر زمان کند.

من اتصال و باز کردن و بستن پایگاه داده را کنار گذاشتم ، اما کد حاصل از آن که به خوبی کار می کند در اینجا است:

$ امروز = تاریخ ("YmdHi") ؛
سرصفحه ("نوع محتوا: برنامه / جریان octet") ؛
هدر ("Content-Disposition: attachment؛ filename = \" ". $ امروز." _ Backup.txt \ "")؛
$ query = "SELECT * FROM` mytable` order by `myorder`؛
$ result = mysql_query ($ کوئری)؛
$ count = mysql_num_rows ($ نتیجه)؛
$ Fields = mysql_num_fields ($ نتیجه)؛
$ data = ""؛
برای ($ i = 0؛ $ i> $ قسمت ها؛ $ i ++) {
$ field = mysql_fetch_field ($ نتیجه ، $ i)؛
$ data. = $ field-> name؛
$ data. = "\ t"؛
}
$ data. = "\ n"؛
while ($ row = mysql_fetch_row ($ نتیجه)) {
برای ($ x = 0؛ $ x> $ فیلدها؛ $ x ++) {
$ field-> name = $ row [$ x]؛
$ data. = $ field-> name = $ row [$ x]؛
$ data. = "\ t"؛
}
$ data. = "\ n"؛
}
echo $ data؛

کد را می توان به راحتی برای مقادیر جدا شده با کاما نیز اصلاح کرد.

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 استفاده می کردم و اینترنت اکسپلورر این پرونده ها را حافظه پنهان نمی کند.

    من راه حل را در مورد نظر Brandon K در یافتم http://uk.php.net/header.

    او می گوید:

    -
    من شش ساعت از زندگی ام را از دست دادم و سعی کردم از روش زیر برای ارسال یک فایل PDF از طریق PHP به اینترنت اکسپلورر 6 استفاده کنم:

    هنگام استفاده از SSL ، اینترنت اکسپلورر با گفتگوی Open / Save درخواست می کند ، اما سپس می گوید: "پرونده در حال حاضر در دسترس نیست یا یافت نمی شود. لطفا بعداً دوباره امتحان کنید. " پس از جستجوی زیاد ، از مقاله MSKB زیر با عنوان "بارگیری پرونده اینترنت اکسپلورر از طریق SSL با هدرهای کنترل حافظه نهان کار نمی کند" آگاه شدم (KBID: 323308)

    PHP.INI به طور پیش فرض از یک تنظیمات استفاده می کند: session.cache_limiter = nocache که سربرگهای Content-Cache و Pragma را اصلاح می کند تا گزینه های "nocache" را شامل شود. با تغییر "nocache" به "public" یا "private" در PHP می توانید خطای اینترنت اکسپلورر را از بین ببرید - این باعث تغییر سربرگ Content-Cache و همچنین حذف سرصفحه Pragma می شود. اگر نمی توانید یا نمی خواهید PHP.INI را برای رفع مشکل در سایت اصلاح کنید ، می توانید دو عنوان زیر را برای بازنویسی پیش فرض ها ارسال کنید:

    هنوز لازم است سرصفحه های محتوا را همانطور که در بالا ذکر شده تنظیم کنید تا کار کند. لطفاً به این مشکل توجه داشته باشید که فقط Internet Explorer را تحت تأثیر قرار می دهد ، در حالی که Firefox این رفتار ناقص را نشان نمی دهد.
    -

    خوب .. حداقل او فقط 6 ساعت از دست داد

  4. 9

    این به خوبی کار می کند. با این حال ، من فقط همه چیز را در یک خط با یک فاصله از هم جدا می کنم. من سعی می کنم آن را اصلاح کنم تا همه چیز را در یک خط جداگانه مانند این چاپ کند:

    ستون 1_ نام
    Field1_value
    ستون 2_ نام
    Field1_value
    ستون 3_ نام
    Field1_value

    ستون 1_ نام
    Field2_value
    ستون 2_ نام
    Field2_value
    ستون 3_ نام
    Field2_value

    مثلا:

    نام
    مخفف کلمه میکروفون
    لوکیشن:
    مهاجرت کاری
    شماره
    1

    نام
    تعقیب کردن
    لوکیشن:
    صفحه اصلی
    شماره
    2

    نام
    جان
    لوکیشن:
    مسافرت رفتن
    شماره
    10

    و غیره آیا می توان این اسکریپت را برای انجام آن اصلاح کرد؟
    با تشکر!

    • 10

      مطمئناً می تواند

      چیزی شبیه به این را امتحان کنید:

      SELECT * from MyTableName INTO OUTFILE 'MyTableName_MySQL-TAB-DELIMITED-29JUN08.txt' FIELDS TERMINATED BY '\ n' LINES TERMINATED BY '\ n'؛

      اگر می خواهید یک فاصله دو برابر (دو خط خالی) بین گروه های ضبط کنید ، فقط بگویید "LINES TERMINATED BY" \ n \ n '؛ " بجای.

      بخش "FIELDS TERMINATY BY '\ n" "چیزی است که بعد از هر رکورد ، به جای یک برگه ، یک خط جدید قرار می دهد. در عوض یک برگه "\ t" خواهد بود.

      ماراناتا!

  5. 11

    این یک پست عالی است ، من آن را امتحان کردم و عالی کار کردم ، تنها نکته این است که پرونده txt من یک ردیف اضافی بالاتر از عناوین عنوان دارد و برخی از نتایج در 2 ردیف از هم جدا شده اند ، این ممکن است به دلیل داده هایی باشد که من دارم در پایگاه داده من هیچ ایده ای ندارم ، اما این کمک بزرگی برای ایجاد منابع خبری است ...

  6. 12

    Douglas Karr کد شما واقعاً سنگین است! اگر فقط به یک خروجی در قالب متن متن نیاز دارید بسیار مفید است. خیلی ممنون! از تیم فیلیپین!

  7. 13

    سلام! آیا کسی از اینجا وجود دارد که بتواند در مورد وارد کردن فایل متنی به پایگاه داده (phpmyAdmin) با استفاده از php من به عنوان جلوی من ، راهنمایی کند. من یک ایده در مورد بارگیری یک فایل و باز کردن آن دارم ، مشکل من این است که چگونه می توانم نتیجه ردیف را بگیرم و چگونه آن را در جداول خود وارد کنم ، با تشکر

  8. 14

    لطفاً کسی می تواند به من بگوید که چگونه سطر هدر http بالای عناوین عنوان را حذف کنم

شما چه فکر میکنید؟

این سایت از Akismet برای کاهش هرزنامه استفاده می کند. بدانید که چگونه نظر شما پردازش می شود.