שלח תשובה

זירת השאלות

658
צפיות
18
תשובות

הכנסת נתונים לבסיס הנתונים PHP

,‏ 21 בפברואר, 2006

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/benbs/domains/benbs.mozcal.org/public_html/index.php on line 8

שורה 8:
sql_query("INSERT INTO UserPass(User,Pass) VALUE($POST['User'],$POST['Pass'])");
מה הבעיה?
תודה מראש,
              בן

תגיות:

18 תשובות

  1. benbs הגיב:

    תיקון שורה 8
    שמתי לב שהיא התבלגנה….


    sql_query("INSERT INTO UserPass(User,Pass) VALUE($POST['User'],$POST['Pass'])");

  2. igor21 הגיב:

    >>>


    sql_query("INSERT INTO UserPass (User,Pass)
    VALUES ('".$POST['User']."','".$POST['Pass']."')");

  3. benbs הגיב:

    כתבתי את הקוד והופיעה לי בעיה חדשה


    Fatal error: Call to undefined function: sql_query() in /home/benbs/domains/benbs.mozcal.org/public_html/index.php on line 8

  4. GreenBerret הגיב:

    מה יש לכם?
    אם אתם לא יודעים, אל תעזרו

    mysql_query("INSERT INTO UserPass(`User`,`Pass`) VALUE('{$_POST['User']}','{$_POST['Pass']}')");

    יש לך כאן כמה דברים שלא הבנת.

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

    2. אין דבר כזהPOST$, ז"א, בהנחה שלא הגדרת. כנראה שהתכוונת לPOST_$

    3. אין דבר כזה sql_query, לא לפחות בתוספים הרגילים של PHP.
    אני מנחש שהתכוונת לmysql_query

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

    בקיצור, היו לך כאן 4 שגיאות, שאתה צריך להבין ממה הן נבעו.

    עוד תוספת, אני לא יודע אם User הוא שם שמור בSQL, אבל עדיף לעטוף שמות כאלו, שאתה לא המצאת, בגרש (גרש?!) עליון כזה `
    נמצא במקש משמאל לאחד.

  5. benbs הגיב:

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

    1. מישהו יכול לתת לי שאילתת הוספת טבלה עם 2 שדות, ולסדר את הCOLLECTION?
    2. איזה ערך צריך לשים בCOLLECTION?
    utf8_general_ci?

    תודה על ההסבר שלפני, עזרת לי מאוד להבין

  6. GreenBerret הגיב:

    הסבר
    לפי מה שהראית שאתה צריך, הקוד צריך להיות כזה:

    CREATE TABLE `UserPass` (
    `User` VARCHAR(20) default NULL,
    `Pass` VARCHAR(20) default NULL,
    PRIMARY KEY (`User`)
    ) CHARACTER SET utf8 COLLATE utf8_general_ci

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


    SET NAMES utf8
    SET CHARACTER SET utf8

  7. benbs הגיב:

    לא עוזר
    הסתדרתי וגיליתי ת הבעיה שלי בנוגע לכתיבת טבלאות בPHPMYADMIN.
    אבל אני עדיין רואה שדות ריקים שאני מנסה להכניס תכנים דרך PHP.
    אני אתן את האתר ותראו בעצמכם:
    http://benbs.mozcal.org/form.html; זה ה"הרשמה"
    וכאן רשימה של המשתמשים
    http://benbs.mozcal.org/UserNames.php

  8. benbs הגיב:

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

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

    השנייה – התחברות. הכנסת הנתונים ובדיקה באמצעות שאילתה (אני צריך רק את השאילתה שבודקת את זה)

    תודה רבה לעוזרים – האתר הזה ובייחוד הפורום פשוט מעולים!

  9. בניה הגיב:

    תשובה
    בס"ד

    לבדיקה אם המשתמש קיים תעשה SELECT WHERE username= הUSER שהמשתמש הכניס ותעשה mysql_num_rows לתוצאות אם הmysql_num_rows> מ0 אז קיים משתמש כזה אם לא אז לא.
    לבדיקת הנתונים תעשה גם אותה שאילתה כמו למעלה ותשווה את הסיסמא ממסד נתונים למה שהמשתמש הכניס.

  10. benbs הגיב:

    תוכל בבקשה….
    משהו יכול להראות לי את הקוד המלא? ולא הסבר לאיך עושים אותו (או הקוד המלא והסבר מתחת.)
    תודה!

  11. בניה הגיב:

    הינה
    לבדיקה אם המשתמש קיים:

    $result=mysql_query("SELECT * FROM users WHERE user='{$_GET['user']}'");
    if(mysql_num_rows($result)>0)
        {
        echo 'כבר קיים משתמש בשם זה';
        }

    לבדיקת התחברות:


    $result=mysql_query("SELECT * FROM users WHERE user='{$_GET['user']}'");
    if(mysql_num_rows($result)==0)
        {
        echo 'לא קיים משתמש בשם זה';
        }
    else
        {
        $arr=mysql_fetch_array($result);
        if($arr['pass']==$_GET['pass'])
            {
            echo 'אתב מחובר';
            }
        else
            {
            echo 'שם משתמש ןסיסמא לא נכונים';
            }
        }

  12. benbs הגיב:

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

  13. benbs הגיב:

    PHP ןMYSQL
    אני בונה מערכת הרשמה והתחברות לאתר, ואני מעוניין שכל משתמש שיירשם יהיה לו דף אישי שיפתח אוטומאטית.
    איך אני עושה את זה?

שלח תשובה