דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. בעיה באחסון נתונים ב mysql

בעיה באחסון נתונים ב mysql

מתוזמן נעוץ נעול הועבר תכנות
18 פוסטים 4 כותבים 275 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    כתב ב נערך לאחרונה על ידי
    #8

    @ששא אתה לומד PHP?
    תנסה גם להבין יותר מה @chagold כתב לך, כי לא הבנת אותו. הוא רוצה לראות את הפלט של שרשור כל הערכים יחד, לפני הפעלת השאילתה.

    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

    בכל נושא אפשר ליצור קשר dovid@tchumim.com

    ש תגובה 1 תגובה אחרונה
    0
    • ש מנותק
      ש מנותק
      ששא
      השיב לdovid ב נערך לאחרונה על ידי
      #9

      @dovid הפלט של המשתנים?

      תגובה 1 תגובה אחרונה
      0
      • dovidD מנותק
        dovidD מנותק
        dovid ניהול
        כתב ב נערך לאחרונה על ידי
        #10

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

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

        $query = $dbh->prepare("INSERT INTO routes (route_id,agency_id,route_short_name,route_long_name,route_desc,route_type,route_color)
                VALUES (:route_id,:agency_id,:route_short_name,:route_long_name,:route_desc,:route_type,:route_color)");
        
        $params = [
            route_id => $data[0],
            agency_id => $data[1],
            route_short_name => $data[2],
            route_long_name => $data[3],
            route_desc => $data[4],
            route_type => $data[5],
            route_color => $data[6]
        ];
        
        print_r($params);
        
        $query->execute($params);
        

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        תגובה 1 תגובה אחרונה
        3
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          כתב ב נערך לאחרונה על ידי dovid
          #11

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

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          ש שמואל4ש 2 תגובות תגובה אחרונה
          0
          • ש מנותק
            ש מנותק
            ששא
            השיב לdovid ב נערך לאחרונה על ידי ששא
            #12

            @dovid ממש לא נכון
            אני אכן באמצע לימוד אבל הנכון הוא כן שעדיין לא הגעתי בלימודים לשלב הזה אלא התקדמתי לבד.
            אתה רואה שבניתי קוד לבד ולא באתי לשאול "איך מכניסים נתונים לטבלת mysql", נכון?
            המצב שלי כרגע שאני מבין איך תיכנות עובד ואת עקרי הדברים אבל לא מכיר לעומק את השפה ולכן למדתי את זה לבד מאתרים וכו' ואני יודע לבנות קוד אבל הבעיה שלי כמו שאפשר לראות ברוב שאלותי במקרה של שגיאה להבין מה קורה
            ניסיתי לחפש קודם באינטרנט ורק הסתבכתי.
            אני מבין את תחושתך ואת מה שהוביל לזה אבל לכן אני אומר לך שזה לא נכון אלא אני מצליח ובונה לבד קודים רבים, אבל כשאני נתקל בשגיאה הרבה פעמים אני לא מסתדר.
            אז נכון, יש לי בעיה שיש הרבה פעמים שאני לא מצליח להסתדר עם שגיאות וכו' ואני צריך עזרה
            חשבתי שפה המקום שיכולים ורוצים לעזור לי, אם טעיתי אנא אמרו לי ואנסה למצוא מקום אחר
            אבל בכל מקרה יש לי בשבילך ולעוד כמה אנשים הכרת הטוב ענקית כי עזרתם לי וקידמתם אותי בהרבה!
            תודה רבה על מה שעזרתם לי עד כה!

            תגובה 1 תגובה אחרונה
            2
            • dovidD מנותק
              dovidD מנותק
              dovid ניהול
              כתב ב נערך לאחרונה על ידי
              #13

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

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              ש 2 תגובות תגובה אחרונה
              1
              • ש מנותק
                ש מנותק
                ששא
                השיב לdovid ב נערך לאחרונה על ידי
                #14

                @dovid ניסיתי, אבל משום מה הוא מקבל את השורות של הפרמטרים כקבועים, והוא נותן לי את השגיאה הבאה
                Fatal error: Uncaught Error: Undefined constant "route_id" in /var/www/your_domain/csv.php:64 Stack trace: #0 {main} thrown in /var/www/your_domain/csv.php on line 64
                צריך להגדיר את זה כמשתנה?

                תגובה 1 תגובה אחרונה
                1
                • dovidD מנותק
                  dovidD מנותק
                  dovid ניהול
                  כתב ב נערך לאחרונה על ידי dovid
                  #15

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

                  $params = [
                      'route_id' => $data[0],
                      'agency_id' => $data[1],
                      'route_short_name' => $data[2],
                      'route_long_name' => $data[3],
                      'route_desc' => $data[4],
                      'route_type' => $data[5],
                      'route_color' => $data[6]
                  ];
                  

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                  תגובה 1 תגובה אחרונה
                  1
                  • ש מנותק
                    ש מנותק
                    ששא
                    השיב לdovid ב נערך לאחרונה על ידי
                    #16

                    @dovid ב"ה עובד!
                    תודה רבה לך!
                    אבל זה למשל לא תמיד לומדים בקורסים אלא יש פעמים שפשוט מתלמדים לבד, לא?
                    אז הפעם זכיתי ללמוד את זה פה.
                    אבל בשביל להבין, מה שונה אם אני שולח את זה כפרמטרים או סתם משתנים? איפה מתבצע הטיהור?

                    תגובה 1 תגובה אחרונה
                    2
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי dovid
                      #17

                      @ששא כשאתה שותל משתנים, נהיה טקסט ארוך שאתה מגיש כפקודת SQL. המשתנים אמורים מבחינתך להיות ערכים, אבל הם עלולים לפעמים להכיל פקודות SQL ולהצטרף לשרשור הפקודה (לעיתים אפילו תרצה את זה כי יש לך למשל תנאי מותנה וכדומה).
                      אולם בקוד שכתבנו אתה לא מגיש לפקודה טקסט "מת", אלא שם שומרי מקום בערכים לומר פה אמור להיות ערך X ופה ערך Y, ובנפרד אתה מביא רשימת ערכים. ממילא הפקודה יודעת שלא אמור (ואף אסור שיהיה) בערכים הללו כל סממן של פקודה או תחביר, כי הם כל כולם בבחינת ערך.
                      אני מנחש שהקוד שכתבת זה עבור הכנסה של הCSV. אם ככה אתה מרויח גם מהירות, כי בתצורה הזאת של הכנת פרמטרים מראש הפקודה עובדת הרבה יותר מהר (בלולאה תחזור רק על על הexecute ולא על הprepare).

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      תגובה 1 תגובה אחרונה
                      2
                      • שמואל4ש מנותק
                        שמואל4ש מנותק
                        שמואל4
                        השיב לdovid ב נערך לאחרונה על ידי
                        #18
                        פוסט זה נמחק!
                        תגובה 1 תגובה אחרונה
                        0

                        בא תתחבר לדף היומי!
                        • התחברות

                        • אין לך חשבון עדיין? הרשמה

                        • התחברו או הירשמו כדי לחפש.
                        • פוסט ראשון
                          פוסט אחרון
                        0
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום