658
צפיות
צפיות
18
תשובות
תשובות
הכנסת נתונים לבסיס הנתונים PHP
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 תשובות
תיקון שורה 8
שמתי לב שהיא התבלגנה….
sql_query("INSERT INTO UserPass(User,Pass) VALUE($POST['User'],$POST['Pass'])");
>>>
sql_query("INSERT INTO UserPass (User,Pass)
VALUES ('".$POST['User']."','".$POST['Pass']."')");
כתבתי את הקוד והופיעה לי בעיה חדשה
Fatal error: Call to undefined function: sql_query() in /home/benbs/domains/benbs.mozcal.org/public_html/index.php on line 8
אין פונקציה sql_query
***
בס"ד
תחליף את זה ב mysql_query
אז מה כותבים במקום?
—כותרת—-
לא עזר.
אותה בעיה
מה יש לכם?
אם אתם לא יודעים, אל תעזרו
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, אבל עדיף לעטוף שמות כאלו, שאתה לא המצאת, בגרש (גרש?!) עליון כזה `
נמצא במקש משמאל לאחד.
תודה, הסתדרתי אבל יש לי בעיה אחרת..
גיליתי שגיאה קטנה שהרסה לי את הרקוד עכשיו, בגלל זה הוא לא פעל.
עכשיו יש לי בעיה שונה לגמרי.
כשיצרתי את הטבלה בPHPMYADMIN יצרתי אותה באמצעות שאילתה ולא כתבתי לה את השדה של הCOLLETION (כך שברירת המחדל הייתה לטינית, אין לי שום מושג למה..), לכן לא ראיתי שום דבר שהכנסתי לטבלה, אלא שדות ריקים.
מחקתי את הטבלה, ואני לא מצליח לעשות טבלה לבד (לא באמצעות שאילתה…)
1. מישהו יכול לתת לי שאילתת הוספת טבלה עם 2 שדות, ולסדר את הCOLLECTION?
2. איזה ערך צריך לשים בCOLLECTION?
utf8_general_ci?
תודה על ההסבר שלפני, עזרת לי מאוד להבין
הסבר
לפי מה שהראית שאתה צריך, הקוד צריך להיות כזה:
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
לא עוזר
הסתדרתי וגיליתי ת הבעיה שלי בנוגע לכתיבת טבלאות בPHPMYADMIN.
אבל אני עדיין רואה שדות ריקים שאני מנסה להכניס תכנים דרך PHP.
אני אתן את האתר ותראו בעצמכם:
http://benbs.mozcal.org/form.html; זה ה"הרשמה"
וכאן רשימה של המשתמשים
http://benbs.mozcal.org/UserNames.php
הסתדרתי, תודה לכולם. רק עוד בקשה…
כפי שהבנתם לפי השאילתות, אני רוצה לבנות מערכת להתחברות והתנתקות, ונשאר לי החלק האחרון ועוד תוספת חיונית ביותר שאין לי מושג איך עושים…..
הראשונה – אני רוצה שהנתונים של שם המשתמש ייבדקו ובמידה וקיים כבר שם משתמש כזה הוא ייתן הודעת שגיאה.
השנייה – התחברות. הכנסת הנתונים ובדיקה באמצעות שאילתה (אני צריך רק את השאילתה שבודקת את זה)
תודה רבה לעוזרים – האתר הזה ובייחוד הפורום פשוט מעולים!
תשובה
בס"ד
לבדיקה אם המשתמש קיים תעשה SELECT WHERE username= הUSER שהמשתמש הכניס ותעשה mysql_num_rows לתוצאות אם הmysql_num_rows> מ0 אז קיים משתמש כזה אם לא אז לא.
לבדיקת הנתונים תעשה גם אותה שאילתה כמו למעלה ותשווה את הסיסמא ממסד נתונים למה שהמשתמש הכניס.
תוכל בבקשה….
משהו יכול להראות לי את הקוד המלא? ולא הסבר לאיך עושים אותו (או הקוד המלא והסבר מתחת.)
תודה!
הינה
לבדיקה אם המשתמש קיים:
$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 'שם משתמש ןסיסמא לא נכונים';
}
}
תודה רבה! עוד שאלה..
יש לי עוד שאלה לא קשורה: יש לי מערכת משתמשים, איך אני עושה שלכל משתמש ייפתח אוטמאטית דף עם הפרטים שלו? זה מסובך מאוד? אפשר קוד כזה?
UP
מבקש תשובה.
בבקשה.!
PHP ןMYSQL
אני בונה מערכת הרשמה והתחברות לאתר, ואני מעוניין שכל משתמש שיירשם יהיה לו דף אישי שיפתח אוטומאטית.
איך אני עושה את זה?