PHP ו- MySQL: ייצא שאילתה לקובץ מופרד באמצעות כרטיסיות

לוגו PHP של mysql

בסוף השבוע הזה רציתי לבנות עמוד שפשוט יגבה כל שאילתה או טבלה לקובץ מופרד בטאב. לרוב הדוגמאות ברשת יש עמודות מקודדות קשה.

במקרה שלי, רציתי שהעמודות יהיו דינמיות, ולכן נאלצתי לעבור על כל שמות שדות הטבלה כדי לבנות את שורת הכותרת עם שמות העמודות, ואז לעבור על כל הרשומות עבור שורות הנתונים הנותרות. אני גם מגדיר את הכותרת כך שהדפדפן יוזם את הורדת הקובץ בסוג הקובץ (txt) עם שם תאריך הקובץ וחותמת הזמן.

השארתי את מסד הנתונים של חיבור פתוח וסוגר, אבל הנה הקוד שהתקבל שעבד די טוב:

$ היום = תאריך ("YmdHi");
כותרת ("סוג תוכן: יישום / אוקט-סטרים");
כותרת ראשית ("תוכן-דיספוזיציה: קובץ מצורף; שם קובץ = \" ". $ היום." _ Backup.txt \ "");
$ query = "בחר * מ- 'mytable' סדר לפי 'myorder'";
$ result = mysql_query (שאילתת $);
$ count = mysql_num_rows ($ result);
$ שדות = mysql_num_fields ($ תוצאה);
$ data = "";
עבור ($ i = 0; $ i> $ שדות; $ i ++) {
$ field = mysql_fetch_field ($ תוצאה, $ i);
$ data. = $ field-> שם;
$ data. = "\ t";
}
$ data. = "\ n";
בעוד ($ row = mysql_fetch_row ($ result)) {
עבור ($ x = 0; $ x> $ שדות; $ x ++) {
$ field-> name = $ row [$ x];
$ data. = $ field-> name = $ row [$ x];
$ data. = "\ t";
}
$ data. = "\ n";
}
הד נתונים $;

ניתן לשנות את הקוד בקלות גם עבור ערכים המופרדים בפסיקים.

תגובות 14

  1. 1
    • 2

      אני מניח שאתה יכול!

      במקרה זה, בניתי למעשה קישור 'גיבוי' ביישום אינטרנט, ולכן פונקציונליות ה- PHP היא מה שהייתי צריך. עם זאת, מעולם לא ידעתי שתוכל לכתוב גם לקובץ ישירות מהצהרת MySQL. מגניב מאוד!

      תודה!

      • 3

        הדרך שלך תהיה כמובן הדרך הטובה ביותר אם שרת MySQL נמצא על מכונה מרוחקת, מכיוון שהוא כנראה לא יוכל לכתוב על המכונה בה פועל PHP 🙂

        שמח לציין כיוונים אחרים ודברים חדשים למרות זאת 🙂

      • 4

        אבל אתה יכול פשוט להריץ את השאילתה לקובץ, ופשוט להפנות את הדפדפן לקובץ שנוצר, או להשתמש ב"קובץ הקריאה "של PHP אם כל השאר נכשל?

        לא תוכל לעשות זאת אם לשרת mysql אין כמובן גישה למערכת הקבצים ...

  2. 5

    פוסט נהדר. האם ידוע לך על שיטה קלה וחופשית / קוד פתוח לייבוא ​​/ שחזור של קובץ המופרד באמצעות כרטיסיות (כמו שיצרת זה עתה) בחזרה ל- mysql db?

  3. 8

    פשוט איבדתי יותר מ -6 שעות מחיי בניסיון להבין מדוע Internet Explorer 6/7 מחיל קובץ מסוג 'html' ולא מקבל את שמות הקבצים המותאמים אישית שצוינו בכותרות .. וגם לא מאפשרים לשמור קבצים .. מתי מנסה למשתמשים להוריד קבצי טקסט שנוצרו באופן דומה לעיל.

    השתמשתי ב- HTTPS ו- IE לא שומר קבצים אלה במטמון.

    מצאתי את הפתרון בתגובה של ברנדון K בכתובת http://uk.php.net/header.

    הוא אומר:

    -
    בדיוק איבדתי שש שעות מחיי בניסיון להשתמש בשיטה הבאה כדי לשלוח קובץ PDF באמצעות PHP לאינטרנט אקספלורר 6:

    בעת שימוש ב- SSL, Internet Explorer יבקש מתיבת הדו-שיח פתיחה / שמירה, אך לאחר מכן אומר "הקובץ אינו זמין כרגע או לא נמצא. בבקשה נסה שוב מאוחר יותר." לאחר חיפוש רב התוודעתי למאמר הבא של MSKB שכותרתו "הורדות קבצים באינטרנט אקספלורר באמצעות SSL אינן עובדות עם כותרות בקרת המטמון" (KBID: 323308)

    PHP.INI כברירת מחדל משתמש בהגדרה: session.cache_limiter = nocache שמשנה את כותרות Content-Cache ו- Pragma כך שיכללו אפשרויות "nache". באפשרותך לבטל את שגיאת ה- IE על ידי שינוי "nocache" ל"ציבורי "או" פרטי "ב- PHP.INI - פעולה זו תשנה את כותרת ה- Content-Cache וכן תסיר לחלוטין את כותרת Pragma. אם אינך יכול או לא רוצה לשנות את PHP.INI לצורך תיקון בכל האתר, תוכל לשלוח את שתי הכותרות הבאות להחלפת ברירות מחדל:

    עדיין תצטרך להגדיר את כותרות התוכן כמפורט לעיל כדי שזה יעבוד. שים לב לבעיה זו משפיע רק על Internet Explorer, בעוד ש- Firefox אינו מגלה התנהגות פגומה זו.
    -

    טוב .. לפחות הוא הפסיד רק 6 שעות ...

  4. 9

    זה עובד טוב. עם זאת, אני פשוט מקבל הכל על קו אחד המופרד על ידי רווח. אני מנסה לשנות את זה כדי להדפיס הכל בשורה נפרדת ככה:

    עמודה 1_שם
    שדה 1_ערך
    עמודה 2_שם
    שדה 1_ערך
    עמודה 3_שם
    שדה 1_ערך

    עמודה 1_שם
    שדה 2_ערך
    עמודה 2_שם
    שדה 2_ערך
    עמודה 3_שם
    שדה 2_ערך

    לדוגמה:

    שם
    מייק
    מקום
    עבודה
    מספר
    1

    שם
    לתבוע
    מקום
    דף הבית
    מספר
    2

    שם
    ג'ון
    מקום
    מסעות
    מספר
    10

    וכן הלאה. האם ניתן לשנות סקריפט זה בכדי לעשות זאת?
    תודה!

    • 10

      בטח יכול.

      נסה משהו כזה:

      בחר * מ- MyTableName אל ה- OUTFILE 'MyTableName_MySQL-TAB-DELIMITED-29JUN08.txt' שדות שמסוימים על ידי '\ n' קווים המופעלים על ידי '\ n';

      אם אתה מעוניין ברווח כפול (שתי שורות ריקות) בין קבוצות רשומות, פשוט אמור "קווים שהופסקו על ידי '\ n \ n';" במקום זאת.

      החלק "שדות המוגדרים על ידי '\ n" "הוא זה שמציב שורה חדשה אחרי כל רשומה, במקום לשונית. כרטיסייה תהיה במקום זאת '\ t'.

      מרנתה!

  5. 11

    זה בהתרסה פוסט נהדר, ניסיתי את זה ועובד מצוין, הדבר היחיד הוא שקובץ ה- txt שלי כולל שורה נוספת מעל כותרות הכותרות, וכמה תוצאות הופרדו בשתי שורות, זה יכול להיות בגלל הנתונים שיש לי במסד הנתונים שלי אין מושג, אבל זו עזרה נהדרת לבניית הזנות ...

  6. 12

    Douglas Karr הקוד שלך באמת מתנדנד! זה מאוד שימושי במיוחד אם אתה רק צריך פלט בפורמט קובץ טקסט. תודה רבה! מקבוצת הפיליפינים!

  7. 13

    שלום! האם יש מכאן מישהו שיכול לתת לי רמז לגבי ייבוא ​​קובץ טקסט למסד הנתונים שלי (phpmyAdmin) באמצעות ה- php שלי כקצה החזית שלי. יש לי רעיון לגבי הורדת קובץ ופתיחתו, הבעיה שלי היא שכיצד אוכל להשיג את תוצאת השורה וכיצד להכניס אותה לטבלאות שלי, תודה

  8. 14

מה אתה חושב?

אתר זה משתמש Akismet כדי להפחית דואר זבל. למד כיצד הנתונים שלך מעובדים.