היי, אני חדש פה וכדי להתחיל כמו שצריך הינה מדריך קצר שכתבתי...
המדריך לדאטא בייס מסוג MYSQL
ידע שצריך
:
ידע בסיסי ב
-PHP.
הדאטא בייס הינו הדרך הטובה ביותר לפי דעתי לנתונים
!
היא דרך קלה, פשוטה ונוחה
!
ולכן המדריך הבא יעסוק סביב הדאטא בייס וה
-PHP (לא כולל יצירת
DB וכדומה שזה דאטא בייס לעומק
).
נתחיל מההתחברות
:
קוד:
mysql_connect("localhost", "user","pass");
localhost= שרת
user= משתמש
pass= סיסמא
בדרך זו אנו נתחבר ל
-DB ובכך אנחנו נוכל להוציא מידע ממנו
.
כאשר אין סיסמא אפשר פשוט לא לרשום אותה במקום להשאיר את המרכעות ללא ערך, לדוגמא
:
קוד:
mysql_connect("localhost", "itaigili");
בדוגמא הזאת התחברתי לשרת בשם
localhost למשתמש בשם
itaigili.
כפי שאתם רואים לא עשיתי כלל שימוש בסיסמא, אבל התחברתי ל
-DB.
לאחר ההתחברות אנו צריכים לסגור את ה
-DB בגלל סיבה פשוטה
:
למנוע עומס מן השרת- ברגע שלא סוגרים את ה
-DB אתם מפעילים "לחץ" על השרת וזה יוצר באגים ועלול לגרום לשרת לקרוס
.
אז עכשיו לאחר שלמדנו להתחבר בואו נסגור את ההתחברות
:
עכשיו בואו נשלב בין השניים
:
קוד:
$mysql=mysql_connect("localhost", "itaigili");
echo "SQL working";
mysql_close($mysql);
פה הגדרתי את ההתחברות כמשתנה כדי שיהיה נוח לסגור אותו. פקודות המשתתפות בקוד הן
: mysql_connect();
echo;
mysql_close();
ברגע זה אנחנו מחוברים והכל טוב! אבל... אבל... אבל מה עם הדאטא בייס
?
צריך להתחבר למסד נתונים ולא רק להתחבר לשרת
!
אחרי התחברות ל
-mysql שזה בעצם השרת צריך להתחבר לדאטא בייס
:
קוד:
mysql_select_db("name");
name= השם של הדאטא בייס
כאן בעצם אנחנו מסמנים את המסד נתונים
.
הקוד חייב לבוא לאחר התחברות ליוזאר ולפני הסגירה אחרת לא נוכל להשתמש בו והוא יהיה חסר ערך
.
לדוגמא לשימוש
:
קוד:
mysql_select_db("test");
התחברתי לדאטא בייס בשם
test.
והינה סיכום של מה שלמדנו
:
קוד:
$mysql=mysql_connect("localhost", "itaigili");
mysql_select_db("test");
echo "good, the db is working";
mysql_close($mysql);
לעבוד עם כמה
mysql לא מומלץ ואותו דבר בנוגע לטבלאות, כי אז כל הקוד מתחיל להסתבך
!
אבל אם צריך הרבה נתונים מה עושים? הפיתרון נקרא טבלאות
!
אני אומנם לא ילמד לבנות אחת אבל להתחבר אליהן זה ממש לא סיפור
:
קוד:
$test = mysql_query("SELECT * FROM table");
אמרתי ל
-PHP לסמן את הטבלא
table ואת הכל הגדרתי למשתנה
test,
עכשיו המידע לא קריא ובאפשרותי לעשות 2 דברים
:
1. להפוך אותו למשתנים
2. לספור את השורות שהתקבלו
נעבור על שני האפשרויות
:
1. להפוך אותו למשתנים
:
קוד:
$array = mysql_fetch_array($test);
הפכתי אותה (את הטבלא
test) ברגע זה למשתנה (בשם
array) קריא שאפשר לקרוא לו מתי שארצה
!
הינה דוגמא להדפסת הנתון שמתקבל
:
קוד:
echo $array["text"];
2. לספור את השורות שהתקבלו
:
קוד:
$num = mysql_num_rows($test);
הפכתי אותה (את הטבלא
test) ברגע זה למספר (על שם המשתנה
num) קריא שאפשר לקרוא לו מתי שארצה
!
אם לא נספרו שורות הערך יהיה שווה 0, בדר"כ הקוד שימושי כאשר לא רוצים להסתבך עם מונה בתוך הטבלא האחראית על המשתמשים
.
הינה דוגמא להדפסת הנתון שמתקבל
:
הינה דוגמא לקוד של העלת נתונים
:
קוד:
mysql_query("UPDATE table SET row='value'");
table= טבלא
row= עמודה או תא
value= הערך אותו נעדכן
בהעלת נתונים אנחנו בעצם לא יוצרים תאים אלא משנים את הערך שבהם, זה מאוד שימושי בכל מערכת שבונים שיהיה ניתן לערוך דברים ולא רק לשמור או למחוק
.
ב
-ASP לדוגמא קוד זה כלל לא קיים וזה יתרון שהופך את
PHP לטוב יותר
.
לדוגמא
:
קוד:
mysql_query("UPDATE test SET text='$text'");
פה עדכנתי לטבלא
test לעמודה
test את המשתנה
text. ולמי שלא הבן, פה בחרתי לשנות את הערך של התא
text שבטבלא
test למשתנה
text.
כמובן שניתן לרשום יותר ממשתנה אחד אותו אנו רוצים להחליף
:
קוד:
mysql_query("UPDATE test SET text='$text', title='$title'");
הפקודה
WHERE:
WHERE זו פקודה מאוד שימושית כאשר רוצים לסמן מקום מדוייק או לשנותו או למחוקו, במקום למחוק את כל הטבלא פשוט משתמשים ב
-WHERE ואז ניתן למחוק לדוגמא רק את התא המסויים
.
לדוגמא
:
קוד:
$id= $_GET["id"];
mysql_query("UPDATE test SET text='$text', title='$title' WHERE id='$id' ");
אתם בטח בשוק של מה שעשיתי פה, אז אני יסביר
:
פה כמו מקודם ערכתי את התאים של
text ושל
title בטבלא
test.
אבל, פה הוספתי מן תנאי שאומר לו "איפה שה
-id שווה למשתנה
id", מה שבמקרה פה הוא מקבל את ה
-id מלינק
.
עכשיו חלק לא פחות חשוב היא יצירת נתונים לטבלא, החלק חשוב לדוגמא בפורום שאתם רוצים ליצור אשכולות או במערכת שאתם רוצים ליצור דפים
.
יצירה
:
קוד:
mysql_query("INSERT INTO `table` VALUES ('','$pid','$title','$text'')");
מה שחשוב ביצירה זה לכתוב את שם הטבלא
(table) ואז למלאות את כל העמודות אחרת תיהיה שגיאה
!
כאן לדוגמא הוספתי שורה לטבלא
table שכניראה בעלת 4 עמודות
:
עמוד ראשונה היא כניראה אוטומתית ולכן לא הכנסתי לה כלל ערך, היא לא תצטרך את זה, היא תתמלא מעצמה
.
עמודה שניה תקבל את הערך של המשתנה
pid
עמודה שלישית תקבל את הערך של המשתנה
title
והעמודה הרביעית תקבל את הערך של המשתנה
text ובכך יצרתי שורה
.
אבל אם נניח שיש 5 עמודות וחסר לי אחת, הוא יציג לי לצערי שגיאה שלא תמיד אני רוצה ולכן יש פיתרוך מעולה (העובד על כל השאלתיות
):
1. התעלם
:
קוד:
@mysql_query("INSERT INTO `table` VALUES ('','$pid','$title','$text'')");
כאן אמרתי לו שבזמן שגיאה התעלם ממנה ותמשיך רגיל ללא הצגת נתונים על השגיאה, זה מעולה כאשר לא רוצים שבזמן שגיאה הגולשים יגלו מה היא
!
2. עצור את התוכנית
:
קוד:
mysql_query("INSERT INTO `table` VALUES ('','$pid','$title','$text'')") or die ("ERROR");
כאן אמרתי לי שבזמן שגיאה יעצר הכל ותודפס המילה
ERROR.
ולסיום נלמד מחיקה
:
קוד:
mysql_query("DELETE FROM table");
table= טבלא
מחיקה יכולה להיות של תא אחד או של טבלא שלמה
.
בדר"כ טבלא שלמה לא מומלץ אבל לעיתים זה שימושי
.
לדוגמא
:
קוד:
mysql_query("DELETE FROM test");
פה מחקתי את מה שיש בטבלא
test
אבל תזכרו שיש לנו
WHERE מה שיאפשר לנו למחוק רק שורה מסויימת
:
קוד:
mysql_query("DELETE FROM test WHERE id='1' ");
פה מחקתי רק איפה שה
-ID שווה ל-1, כלומר מחקתי שוררה אחד פשוטה
^^
אבל בואו נחזור לעניין חשוב בקשר הסימון שורות
:
קוד:
$test = mysql_query("SELECT * FROM table");
לא רציתי לבלבל אותכם מקודם ולכן כדי שלא תתבלבלו לא סיפרתי לכם על תוכנות נוספות שמקבלת השאלתיה הזאת
.
קודם כל היא מקבלת
WHERE כמו שהעלת נתונים ומחיקה יכולים גם לקבל (שמירת נתונים כלומר יצירת שורות לא יכול לקבל את
WHERE).
אבל קיימים עוד תכונות
.
אם כבר חזרנו את ה
-WHERE בואו נספר לכם שבמקום שווה ניתן גם לכתוב
: > קטן מ
...
< גדול מ
...
זה מאוד שימושי בסימון שורות ומאוד יעיל
והינה דוגמא לשימוש
:
קוד:
$test = mysql_query("SELECT * FROM table WHERE id='$id'");
אם כבר דיברנו על
WHERE אז הינה תכונה מעניינת אצלו
:
ניתן לסמן שורות רק שהנתון אותו אנו מחפשים הוא בערך, מה זאת אומרת
:
היכן שהמשתנה
like מתחיל כמו הערך של העמודה
היכן שהמשתנה
like נגמר כמו הערך של העמודה
היכן שהמשתנה
like מופיע בערך של העמודה
*קצת מבלבל ואם תרצו לשאול על זה אז בשמחה
*
ואם כבר הזכרנו אותם הינה דוגמא לשימוש בכל אחד מהם
:
קוד:
$test = mysql_query("SELECT * FROM table WHERE id like '$name%' "); //1
$test = mysql_query("SELECT * FROM table WHERE id like '%$name' "); //2
$test = mysql_query("SELECT * FROM table WHERE id like '%$name%' "); //3
כדי לא להשאיר אותכם ללא דוגמאות הינה הסבר
: 1. אני מסמן את הטבלא
table איפה שה
-ID מתחיל במשתנה
name
2. אני מסמן את הטבלא
table איפה שה
-ID מסתיים במשתנה
name
3. אני מסמן את הטבלא
table איפה שה
-ID מכיל את המשתנה
name
ואם זה מסובך לכם אני מציע לקרוא שוב ושוב ושוב עד תבינו או פשוט תשאלו
.
נמשיך עדין עם סימון נתונים מה שגורם לי לחשוב על הכוכבים (*), אתם רוצים לדעת מה היא מסמנת
?
היא מסמנת בעצם את כל העמודות אך לעיתים אנו לא זקוקים לכולם וכדי למנוע סתם עומס ניתן "לקצץ
":
קוד:
$test = mysql_query("SELECT id,name FROM table");
כאן סימנתי את העמודות
id ו
-name שבטבלא
table.
בין עמודה לעמודה אני מפריד בפסיק
!
ועכשיו לסימון כמה שורות בלבד
:
מהתוצאה ה-1 עד התוצאה ה-5 היותר גבוהה
שורה ראשונה מהתוצאה
אני מבין שלא הבנתם אותי וגם אני לא הכי מבין את הפקודה כי לעיתים היא עושה בעיות אבל הינה דוגמא לשימוש בה
:
קוד:
$test = mysql_query("SELECT * FROM table LIMIT 1,5");
כאן סימנתי את השורה הראשונה עד החמישית שבטבלא
table.
למרות שפה אני כבר חייב לספר לכם על בעיה ופיתרון
:
לעיתים שיש לנו כמה שורות אנחנו יודעים שלהפוך אותם למשתנים לא יספיק
קוד:
$array = mysql_fetch_array($test);
כי אז נוכל להדפיס את הנתונים פעם 1, אז מה עושים
?
הפיתרון מאוד פשוט
:
קוד:
$test = mysql_query("SELECT name FROM table WHERE id>'2' LIMIT 1,5");
while ($array = mysql_fetch_array($test)) {
echo "השם של השורה הוא: ".$array["name"];
}
זאת לדעתי דוגמא נפלאה המציגה מצד אחד שילוב של כמה פקודות והדפסת נתונים
.
כאן אני סימנתי את העמודה
name שבטבלא
table היכן שהנתון ב
-ID גדול מ-2 ולקחתי מכל זה את השורה הראשונה עד החמישית
.
לאחר מכן הפכתי את זה למשתנים ב
-while ובכך זה יחזור על ה
-while עש שיגמרו השורות אותם סימנתי
.
בתוך ה
-while השתמשתי ב
-echo שבין היתר יציג את התוצאה של העמודה
name.
לקינוח הייתי רוצה להראות לכם איך מסדרים דברים לפי סדר מסויים
:
כאן בעצם אמרתי לו לסדר לפי ה
-ID.
והינה דוגמא לשימוש
:
קוד:
$test = mysql_query("SELECT * FROM table ORDER BY id");
פה בעצם סימנתי את כל הטבלא
table ואמרתי לו לסדר את הנתונים לפי
id, אך אם רוצים לסדר הכל בסדר יורד, הינה שיטה מעולה לכך
:
והינה השילוב
:
קוד:
$test = mysql_query("SELECT * FROM table ORDER BY id DESC");
כאן כמו מקודם סימנתי את כל הטבלא table וסידרתי אותה לפי id בסדר יורד. וסתם כדי שתידעו שהפקודה LIMIT היא האחרונה בשאלתיה.
זהו, עברנו על כל מה שאפשר אם לא שכחתי כלום!
אתם מוזמנים לשאול שאלות ולחכות למדריך הבא^^
והמדריך הבא כבר בכתיבה: הוא יהיה עם דברים שלא כתבתי פה ועם עבודה עם 2 טבלאות...
©כל הזכויות שמורות ל-"-=Dark_Moon=-" (לי, לעצמי ולאנוכי, מת על המשפט)!