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
    • 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 ساعت از عمرم را از دست دادم تا بفهمم چرا اینترنت اکسپلورر 6/7 از نوع فایل 'html' استفاده می کند و نام فایل های سفارشی من مشخص شده در سرصفحه ها را نمی پذیرد... و همچنین اجازه نمی دهد فایل ها ذخیره شوند. تلاش برای اینکه کاربران فایل های متنی ایجاد شده را به روشی مشابه بالا دانلود کنند.

    من از HTTPS استفاده می کردم و IE این فایل ها را کش نمی کند.

    من راه حل را در نظر براندون کی در اینجا پیدا کردم http://uk.php.net/header.

    او می گوید:

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

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

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

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

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

  4. 9

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

    Column1_name
    Field1_value
    Column2_name
    Field1_value
    Column3_name
    Field1_value

    Column1_name
    Field2_value
    Column2_name
    Field2_value
    Column3_name
    Field2_value

    مثلا:

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

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

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

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

    • 10

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

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

      انتخاب * از MyTableName به OUTFILE 'MyTableName_MySQL-TAB-DELIMITED-29JUN08.txt' فیلدهای خاتمه یافته توسط '\n' خطوط خاتمه یافته توسط '\n';

      اگر می‌خواهید بین گروه‌های رکورد فاصله دوتایی (دو خط خالی) وجود داشته باشد، فقط بگویید «LINES TERMINATED BY '\n\n';» بجای.

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

      ماراناتا!

  5. 11

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

  6. 12

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

  7. 13

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

  8. 14

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

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

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