האם PHP עובד רק עם mysql
Унции с б mysql
סיכום:
1. מטרת PDO: מחלקת ה- PDO ב- PHP משמשת לטיפול בבעיות שעלולות להתרחש בשאילתות מסדי נתונים על ידי זריקת חריגים.
2. דף אימות: דף האימות מוצג כאשר מתגלה תנועה חשודה מרשת המשתמש. זה עוזר לגוגל לקבוע אם הבקשות מגיעות מאדם או רובוט.
3. סיבות לדף האימות: הדף מוצג כאשר מערכות אוטומטיות מזהות בקשות יוצאות המפרות את תנאי השירות של גוגל. זה מפסיק להציג כאשר הבקשות נפסקות.
4. מקור בקשות: בקשות יכולות להיות מקורן בתוכנות זדוניות, תוספות דפדפן או סקריפטים המוגדרים לשאילתה אוטומטית. אם משתמשים בחיבור לאינטרנט משותף, הבעיה עשויה להיות נובעת ממחשב אחר עם אותה כתובת IP.
5. אימות מילה: אימות מילים עשוי להופיע אם יתקניו שאילתות מורכבות או תכופות, בדרך כלל נוצרות על ידי מערכות אוטומטיות.
6. פרמטר אופציונלי בפונקציות MySQL: רוב פונקציות MySQL יכולות לקבל קישור_דוד כפרמטר אופציונלי. אם לא מסופק, משתמשים בחיבור האחרון שנפתח.
7. תפקיד $ dblink: משתנה $ dblink מחזיק את החיבור עם שרת MySQL.
8. סקריפט הפרשי נתונים: נוצר סקריפט כדי לבדוק את הפרש הנתונים בין שתי טבלאות עם אותו מבנה.
9. מגבלות של סקריפט הפרש נתונים: המבנה של שתי הטבלאות חייב להיות זהה, שמות הטבלה צריכים להיות שונים (או בבסיסי נתונים שונים) וההרשאות לשני מסדי הנתונים צריכים להיות זהים.
10. שימוש בסקריפט הפרשי נתונים: התסריט שימושי בעת ביצוע שינויים בתסריט קיים ורוצה להשוות את ההשפעה של אותם שינויים.
שאלות ותשובות:
1. מה המטרה של PDO?
PDO משמש לטיפול בבעיות שעלולות להתרחש בשאילתות מסד נתונים על ידי זריקת חריגים.
2. מתי מוצג דף האימות?
דף האימות מוצג כאשר מתגלה תנועה חשודה מרשת המשתמש.
3. מדוע מופיע דף האימות?
הדף מופיע כאשר בקשות יוצאת מרשת המשתמש מפגיעות את תנאי השירות של גוגל. זה מפסיק להציג כאשר הבקשות נעצרות.
4. מהם מקורות הבקשות האפשריים?
בקשות יכולות להגיע מתוכנות זדוניות, תוספות דפדפן או סקריפטים המוגדרים לשאילתה אוטומטית. אם שימוש בחיבור לאינטרנט משותף, מחשב אחר עם אותה כתובת IP יכול להיות המקור.
5. מתי מופיע אימות מילים?
אימות מילים מופיע כאשר מנותקים שאילתות מורכבות או תכופות, בדרך כלל נוצרות על ידי מערכות אוטומטיות.
6. מה המטרה של משתנה $ dblink?
$ dblink מחזיק את החיבור עם שרת MySQL.
7. מהן המגבלות של סקריפט הפרשי הנתונים?
המבנה של שתי הטבלאות חייב להיות זהה, שמות הטבלה צריכים להיות שונים (או בבסיסי נתונים שונים) וההרשאות לשני מסדי הנתונים צריכים להיות זהים.
8. מתי סקריפט הפרש הנתונים שימושי?
התסריט שימושי בעת ביצוע שינויים בתסריט קיים ורוצה להשוות את ההשפעה של אותם שינויים.
9. כיצד פועל סקריפט ההבדלים בנתונים?
התסריט משווה את הנתונים בין שני טבלאות עם אותו מבנה על ידי שאילתת הטבלאות וניתוח ההבדלים.
10. כיצד יכולים משתמשי Windows להחיל שינויים על משתנה הנתיב?
אם Apache מותקן כשירות ומשתנה הנתיב משתנה כדי להגיע ל- libmysql.DLL, יש לאתחל מחדש את המכונה כדי שהשינויים ייכנסו לתוקף.
11. כיצד ניתן לאבטח את נתוני MySQL?
כדי לאבטח נתוני MySQL ולציית לתקני PCI, ניתן ליישם הצפנה. ניתן להשתמש בכלים כמו DM-Crypt, אבטחה-כללית עבור MySQL או הצפנת דיסק המסופקת על ידי מערכת ההפעלה.
12. מה התפקיד של פונקציית Table_Data_Difference?
פונקציית Table_Data_Difference משמשת לבדיקת הפרש הנתונים בין שתי טבלאות עם אותו מבנה.
13. מה התפקיד של פרמטרים ראשונים של $ ו- $ שנייה בפונקציה Table_Data_Difference?
ראשונה ושנייה $ מייצגים את שמות שתי הטבלאות שצריך להשוות עבור הבדלי נתונים.
14. כיצד פונקציה Table_Data_Difference מאחזרת שמות שדות מהטבלה?
הפונקציה משתמשת בשדות התצוגה מהשאילתה כדי לאחזר את שמות השדות מהטבלה שצוינה.
15. כיצד פונקציה Table_Data_Difference משווה את הנתונים בין שתי טבלאות?
הפונקציה בוחרת את כל השורות מהטבלה הראשונה ובונה שאילתה לבחירת שורות מהטבלה השנייה התואמת את ערכי השדות בשורה הנוכחית של הטבלה הראשונה. כל רשומות שאין -תחרות מוצגות.
Унции с б mysql
עֵצָה: היתרון הגדול של PDO הוא שיש לו מחלקת חריגים לטפל בבעיות שעלולות להתרחש בשאילתות מסד הנתונים שלנו. אם חריג נזרק בניסיון < >חסום, התסריט מפסיק להוציא לפועל ולזרום ישירות לתפוס הראשון () < >לַחסוֹם.
האם PHP עובד רק עם mysql
Б эой сранице
Ы зé. С помדיר. Почем эо мого?
Эа сраница о бображае тех сах, кога воматеשיים си сисלוח рmе рגות р רבות ш רבות р р рוהים р рוהים которые нé. Сраница пересанет ообрוחים. До эого момента д.
Исочником запросов может сmжж вредоносfte по, подаееые моди базלוח нилm mчnзnзnчnчnчnчnчnчnчnчnчnчnчnчnчnчnчзדי ы з запросов. Еи ы иололalty ощий дדיר. O. Подробнרבה.
Проверка по сов может тelte пояяе, еи ы водите сדיר еами, или же водите запроы ченн часо.
Унции с б mysql
Замечание:
Болинсо унций mysql принимаю link_identifier как поседний, оионалный парамגש. Еи оне н уазан, то иолетent. Если соединений нет, то модуль пытается открыть соединение используя параметры, указанные в php.ini . С чly неуачи, унции возращаю ю שֶׁקֶר . שֶׁקֶר .
הערות תרומות למשתמש 38 הערות
לפני 15 שנים
# נוצר על ידי Dhirendra ניתן להגיע ל- Dhirendrak ב- Yahoo Dot com
# סקריפט זה נוצר כדי לבדוק את הפרש הנתונים בין שתי טבלאות
# כאשר המבנה של שתי השולחנות זהה.
# מגבלה:
# 1) מבנה של שתי הטבלאות צריך להיות זהה.
# 2) שם של שתי הטבלה צריך להיות שונה אך אם זהה מלבד ברור
# טבלה שנייה צריכה להיות אם מסד נתונים שונה.
# 3) אם השתמש בשני מסד נתונים משני הרשאות מסד הנתונים צריך להיות זהה
# כשאני משתמש בכינויים כדי לקבל את המידע.
הִיכים
# שימושים ::
# 1) זה עשוי להיות שימושי כאשר ביצעת כמה שינויים בקיים שלך
# סקריפט ואתה מצפה לפלט מסוים. אז בעזרת זה
# פונקציה אתה יכול להשוות את ההשפעה עקב השינויים שלך בתסריט.
הִיכים
הִיכים
?php
$ מארח = “”; # שם מארח או כתובת IP
$ user = “”; # שם משתמש מסד נתונים
$ pass = “”; # סיסמת מסד נתונים
$ database = “”; # שם DateAbase איתו ברצונך להתחבר
# קבל קשר עם MySQL
$ dblink = @ mysql_connect ($ מארח, $ משתמש, $ pass);
# בחר ופתח את מסד הנתונים
mysql_select_db ($ מסד נתונים, $ dblink);
$ db1 = “< your db1 >“; // מסד נתונים ראשון
// מסד נתונים שני אם מסד הנתונים זהה לשתי הטבלאות מאשר להשתמש זהה ל- DB1
$ db2 = “< your db2 >“;
$ table1 = “< your table1 >“; // טבלה ראשונה
// טבלה שנייה אם בסיס הנתונים זהה לשתי הטבלאות מאשר שם טבלה
# חייב להיות שונה אך שם השדות זהים וסדר השדות זהים.
// הפונקציה מתחילה כאן
פונקציה table_data_difference ($ ראשון, $ שנייה)
DBLink גלובלי של $;
$ sql1 = “הצג שדות מ- $ first”;
$ תוצאה = mysql_query ($ sql1, $ dblink) או למות (“שגיאה בביצוע 1 = מילת מפתח”>. mysql_error ());
בעוד ($ שורה = mysql_fetch_object ($ תוצאה))
<
$ מ-_fields [] = $ שורה -> שדה;
>
$ sql = “בחר * מ- $ first”;
$ res = mysql_query ($ sql, $ dblink) או למות (“שגיאה בביצוע 2 = מילת מפתח”>. mysql_error ());
$ j = 1;
בעוד ($ שורה = mysql_fetch_array ($ res))
$ num = count ($ מ-_fields);
$ sql_next = “בחר $ שנייה .* משנייה $ איפה “;
עבור ($ i = 0; $ i < $num ; $i ++)
$ sql_next = $ sql_next . “” . שנייה . “.” . $ מ-_fields [$ i]. “= ‘” . $ ROW [$ מ-_FIELDS [$ i]]. “‘ו”;
>
$ sql_next = substr ($ sql_next, 0, strlen ($ sql_next)- 5);
$ res_next = mysql_query ($ sql_next, $ dblink) או למות (“שגיאה בביצוע 3 = מפתח מפתח”>. mysql_error ());
$ num1 = mysql_num_rows ($ res_next);
אם ($ num1 == 0)
עבור ($ i = 0; $ i < count ( $from_fields ); $i ++)
$ val = $ val . “
” . $ מ-_fields [$ i]. “מילת מפתח”>. $ ROW [$ מ-_FIELDS [$ i]];
>
// הצג את הרשומה שאינם מתאימים.
הד “
\ n ” . $ j . “.” . $ val;
הד “
—————————————————–“;
$ J ++;
>
$ ראשון = $ db1 . ‘.’ . $ טבלה 1;
שנייה $ = $ db2 . ‘.’ . $ טבלה 2;
table_data_difference ($ ראשון, $ שנייה);
לפני 16 שנה
עבור משתמשי Windows, שימו לב:
אם Apache מותקן כשירות, ואתה משנה משתנה נתיב כך שהוא יכול להגיע ל- LibmySQL.DLL, תצטרך לאתחל מחדש את המכונה כדי ליישם שינויים.
לפני 15 שנים
כמו כן, כדי לאבטח נתוני MySQL ולהיות מסוגל לעמוד בתקני PCI, עליך להצפין את הנתונים. ישנן דרכים רבות לעשות זאת. עבור האקרים, אתה יכול להשתמש ב- DM-Crypt (www.saout.כלי DE/MISC/DM-CRYPT). בעיקרון הוא משמש להצפנת המחיצה כולה. אם אתה רוצה פיתרון מתוחכם לכו עם אבטחה כללי עבור MySQL מ- Packet General (www.מנות מנות.com)
ב- Windows, באפשרותך להשתמש בתכונת הצפנת דיסק המסופקת על ידי Windows עצמו או כלי כמו Trucrypt (www.TrueCrypt.org)
לפני 15 שנים
@Amanda 12-OCT-2007 09:58
כמעט הייתי צריך לשאול את עצמי אם זו שאלה אמיתית. אם שרת MySQL דוחה את ניסיון החיבור אז, כן, MySQL תוכל להחזיר שגיאה ל- PHP. ואם PHP לא יכול לגשת לשרת היעד MySQL בכלל, הוא גם חכם מספיק כדי להנפיק את השגיאה המתאימה כשלעצמה כשלעצמה.
לפני 17 שנה
אם אתה רוצה לגרום ל- PHP לעבוד יפה עם MySQL, אפילו עם Apache, תחת מערכות מבוססות Windows, נסה XAMPP, מ- Apache Friends. זה שומר להתעסק בקבצי config, וזו הבעיה העיקרית היחידה בניסיון לגרום לשלושה לעבוד יחד תחת Windows.
לפני 17 שנה
הערה על משאבים
כאשר משאב (ה.ז. מזהה קישור) נגמר בהיקף, הוא נמחק ומשאבי המחשב המשויכים (ה.ז. קישור ה- TCP למסד הנתונים) יסתיים גם כן. בינתיים הכל טוב!
עם זאת, בקוד הבא קישור TCP MySQL נמשך עד סוף הביצוע:
$ conn = mysql_connect (‘שם מארח’, ‘שם משתמש’, ‘סיסמה’);
$ conn = null;
שינה (30);
?>
הסיבה לכך היא שהמזהה הקישור הפנימי נשמר, כך שפונקציות MySQL הבאות יעבדו. נראה כי אין דרך למחוק את ההתייחסות הפנימית הזו.
אם היית, עם זאת, לפתוח 2 חיבורים, הוותיק ביותר יימחק אוטומטית (כך שהחיבור ל- HostName יסתיים בהצהרת $ conn = null, החיבור ל- HostName2 יתקיים עד סוף הסקריפט).
$ conn = mysql_connect (‘שם מארח’, ‘שם משתמש’, ‘סיסמה’);
$ conn2 = mysql_connect (‘hostname2’, ‘שם משתמש’, ‘סיסמה’);
$ conn = null;
$ conn2 = null;
שינה (30);
?>
לפני 17 שנה
אני משתמש ב- IIS 6, Php 5.04, Windows Server 2003 ו- MySQL 4.1.11. והנה מה שהצלחתי להבין.
לגרום ל- MySQL ו- PHP לדבר אחד עם השני, ב- PHP.CFG, אל תשכח להפעיל את התג
CGI.force_redirect = 0, וודא שאתה מגדיר אותו ב 0 (זה ברירת מחדל ב 1. פשוט מחק את החצי-קולון מלפניו כדי להפעיל אותו בקוד) ואז ה- phpinfo יגיד שהוא קורא את ה- CFG מספריית ההתקנה של PHP במקום שורש Windows שלך. ואז ה- phpinfo שלך יראה את הערך של MySQL שאנשים מסוימים עשויים להתקשות איתם. אין צורך בהגדרות רישום או העתקה של שום דבר. עקוב גם אחר שאר העזרה המצוינת מהערות המשתמש. הנה מה שעשיתי, כדי להפוך את זה לפשוט:
הכנתי תיקיה בעץ התיקיה ממש מעל קבצי התוכנית (חקור את המחשב שלך) וקראתי לו PHP. חילקתי את .גרסת ZIP PHP לתוכו (לא גרסת ההתקנה האוטומטית). ערכתי את ה- PHP.מומלץ ב- INI, שינה את שמו ל- PHP בלבד, הוסיף את שם המשתמש שלי ב- SQL, שם מסד נתונים וכו ‘.(אתה באמת צריך להסתכל מקרוב על קובץ ה- CFG ולוודא שאתה לא מתעלם ממשהו). מופעל את ההרחבה = php_mysql.DLL (פשוט מחק את החצי-קולון שמולו). הוסיף את תיקיית ה- PHP לנתיב (הוראות כיצד לעשות זאת הן די פשוטות ומתועדות לעיל). הפכתי גם את תיקיית Ext לנתיב, אבל אני לא בטוח אם זה באמת הכרחי. הערות המשתמש הן מה שבאמת עזר לי, אז חשבתי שאחזיר את החסד, ואנסה להרחיב קצת את הנושא הזה.
לפני 18 שנה
בעיות פדורה mysql!!
ב- Fedora 3 מודול PHP MySQL אינו מגיע עם התקנת ברירת המחדל. כדי להתקין אותו השתמש ב- $> yum התקן php_mysql
אם אתה לא עושה זאת תקבל שגיאות עם פונקציות MySQL כמו mysql_connect ()
מקווה שזה עוזר!
לפני 18 שנה
אם אתה רוצה לשכפל את הפלט של ‘mysql – -html`, הדפסת את התוצאות שלך בטבלת HTML, ראה פונקציה זו:
לפני 21 שנה
היי, הנה טריק קטן ונחמד לבחור רשומות בסדר אקראי מטבלה במאגר MySQL לפני גרסה 3.23
בחר *, (itemid/itemid) *rand () כ- myrandom מפריטים הזמינו על ידי myrandom
[עורכים הערה: ופשוט “בחר * מהזמנת Foo מאת RAND ()” אחרי 3.23]
לפני 15 שנים
אחרי שסוף סוף קיבלתי את IIS, PHP ו- MySQL במכונת Windows XP חדשה, החלטתי לכתוב את הצעדים שנקטתי כדי שתוכל לראות איך זה נעשה: http: // www.Atksolutions.com/מאמרים/install_php_mysql_iis.html
מקווה שזה עוזר.
לפני 15 שנים
/*
התקנת שרת MySQL (קהילה) ב- 32 סיביות Windows XP המריצה apache
?php
ב- Windows, הדרך המומלצת להריץ את MySQL היא להתקין אותו כשירות Windows, לפיה MySQL מתחיל ועוצר אוטומטית כאשר Windows מתחיל ועוצר. ניתן לשלוט על שרת MySQL המותקן כשירות גם מפקודות שורת הפקודה, או עם כלי השירות הגרפי כמו PhpMyadmin.
PHP —> מחברי mysql (php_mysql.dll ו- php_mysqli.DLL כהרחבות)
MySQL מספקת את תוספי MySQL ו- MySQLI עבור מערכת ההפעלה של Windows בכתובת http: // dev.mysql.com/הורדות/מחבר/PHP/עבור MySQL גרסה 4.1.16 ומעלה, mysql 5.0.18, ו- MySQL 5.1. כמו הפעלת כל סיומת PHP ב- PHP.ini (כגון php_mysql.DLL), יש להגדיר את ההנחיה של PHP להנחיית PHP לספרייה בה ממוקמים תוספי ה- PHP.
MySQL כבר לא מופעל כברירת מחדל, ולכן ה- php_mysql.יש להפעיל DLL DLL בתוך PHP.ini. כמו כן, PHP זקוק לגישה לספריית הלקוחות MySQL. קובץ בשם libmysql.DLL כלול בחלוקת PHP של Windows וכדי ש- PHP ידבר עם MySQL קובץ זה צריך להיות זמין לנתיב מערכות Windows.
סקריפט PHP מעקב מועיל לבדיקת חיבור PHP עם MySQL.
*/
// $ connect = mysql_connect (“שם המארח שלך”, “ספריית שורש mysql”, ‘סיסמת mysql, אם בכלל’);
// $ connect = mysql_connect (“שם מארח או כתובת – 127.0.0.1 “,” שורש “, ‘סיסמה’);
$ connect = mysql_connect (“localhost”, “שורש”, ‘סיסמה’);
אם ($ Connect) הד “מזל טוב!\ n
“;
הד “מחובר בהצלחה לשרת מסד הנתונים של MySQL.\ n
“;
> אחרת $ שגיאה = mysql_error ();
הד “לא יכול היה להתחבר למסד הנתונים. שגיאה = $ שגיאה .\ n
“;
יְצִיאָה();
>
// חיבור סגירה
$ close = mysql_close ($ connect);
אם ($ סגור) הד “\ n
“;
הד “עכשיו סוגר את החיבור. \ n
“;
הד “חיבור MySQL נסגר גם בהצלחה.\ n
“;
> elseecho “יש בעיה בסגירת חיבור MySQL.\ n
“;
>
יְצִיאָה();
?>
לפני 16 שנה
עשיתי פונקציה זו כדי להפחית שיחות DB. אתה יכול לאחסן תוצאות MySQL בהפעלה var ולמיין את התוצאות בכל עמודה. יכול לעבוד נחמד באפליקציית Ajax.
פונקציה mysql_sort ($ תוצאות, $ sort_field, $ dir = “asc”) $ temp_array = array ();
$ i = 0;
foreach ($ תוצאות כ- $ res) $ temp_array [$ i] = $ res [$ sort_field];
$ i ++;
>
אם ($ dir == “ASC”) ASORT ($ temp_array);
> אחר ארסורט ($ temp_array);
>
$ new_results = array ();
$ i = 0;
foreach ($ temp_array כ- $ k => $ v) $ new_results [$ i] = $ תוצאות [$ k];
$ i ++;
>
ksort ($ new_results);
להחזיר $ new_results;
//להשתמש
אם (ספירה ($ _ הפעלה [“מילואים”]) == 0) $ _session [“res”] = [קבל תוצאות מסד נתונים עם זאת אתה יכול]
>
$ _Session [“res”] = mysql_sort ($ _ session [“res”], $ _request [“sort”], $ _request [“dir”]);
לפני 17 שנה
ג’ון קוגשול כתב סקריפט תאימות PHP5 EXT/MYSQLI ליישומים שעדיין משתמשים בפונקציות ה- EXT/MYSQL הישנות. זה מונע את הטרחה של ניסיון לקבל גם את תוספי MySQL וגם MySQLI העמוסים ב- PHP5, שיכולים להיות מסובכים.
לפני 17 שנה
הפעלת MySQL עם Windows Server 2003/IIS 6.0:
מצא את ה- PHP שלך.ראשית קובץ INI, בדוק את PHPINFO () כדי לראות היכן PHP מחפש כרגע PHP.ini. (אני.ה. באמצעות מתקין Windows עבור PHP 5.0.4, ה- PHP.קובץ ה- INI הוצב ב- C: \ Windows Dir.עם זאת, אני ממליץ כי אינך משתמש במתקין – עבור עם התקנה ידנית מלאה.
הגדר את הדברים הבאים ב- PHP.ini:
Display_errors = ON
ERROR_REPORTING = E_ALL
זה יוודא שתראה שגיאות שמתעוררות במהלך התצורה. הקפד לתקן את אלה כשתסיים לשחק עם PHP.Ini! אל תשאיר את ההגדרות האלה כאלה במכונת ייצור.
ב- PHP.INI קבע את הדברים הבאים:
soffice_dir = “pathtoextensions (usulyally [yourpathtopp] \ ext)”
הרחבה = php_mysql.DLL (וודא שזה לא מורכב אם זה כבר ב- PHP שלך.ini)
ב- IIS, פתח הרחבות שירות אינטרנט, לחץ על “הוסף סיומת שירות אינטרנט חדש. “
Type-in PHP עבור שם ההרחבה
תחת קבצים נדרשים:
הוסף [thatpathtopp] \ php5isapi.dll
הוסף [thatpathtopp] \ php5ts.dll
לחץ על ‘החל’ ואז לחץ על ‘אישור’
צור אתרי אינטרנט כמוך בדרך כלל, אך וודא שיש להם הרשאות הניתנות להפעלה, ולא רק גישה לתסריט. תחת הכרטיסייה “ספריית בית”, לחץ על ‘תצורה’. גלול מטה ברשימה בחלקו העליון ובדוק אם אתה יכול למצוא PHP. אם כן, וודא שהנתיב להפעלה עבור PHP נכון. אם אינך מוצא PHP ברשימה, לחץ על ‘הוסף. ‘, ואז דפדף להפעלה הנכונה, [Thopathtoph] \ php5isapi.DLL ולחץ על אישור. בשדה ההרחבה, הזן ‘php’. פעלים כבר צריכים להיות מוגדרים ל”כל הפעלים “, להשאיר את זה ככה.
צור דף מבחן עם קוד זה:
קרא לזה מבחן.PHP, והניח קובץ זה לאתר האינטרנט שיצרת זה עתה. דפדף בדף, עם Firefox רצוי;), וודא שיש לך קטע MySQL עם קצת מידע על MySQL שם. אם לא, אז הנתיבים שלך נדגים, או שאתה עדיין לא עורך את ה- PHP הנכון.ini (שוב, התבונן במיקום ש- phpinfo () מראה לך, ופשוט ערוך אותו שם אם אתה צריך, אז הזז אותו אחר כך והפך מחדש).
PHP Connect ל- MySQL
PHP 5 ומאוחר יותר יכול לעבוד עם מסד נתונים של MySQL באמצעות:
- סיומת mysqli (ה- “אני” עומד לשיפור)
- PDO (אובייקטי נתוני PHP)
גרסאות קודמות של PHP השתמשו בתוסף MySQL. עם זאת, הרחבה זו הושלמה בשנת 2012.
האם עלי להשתמש ב- MySQLI או PDO?
אם אתה זקוק לתשובה קצרה, זו תהיה “כל מה שתרצה”.
גם ל- MySQLI וגם ל- PDO יש את היתרונות שלהם:
PDO תעבוד על 12 מערכות מסדי נתונים שונות, ואילו MySQLI יעבוד רק עם מסדי נתונים של MYSQL.
לכן, אם אתה צריך להחליף את הפרויקט שלך כדי להשתמש במסד נתונים אחר, PDO מקלה על התהליך. אתה צריך רק לשנות את מחרוזת החיבור וכמה שאילתות. עם MySQLI, תצטרך לשכתב את כל הקוד – השאילתות כלולות.
שניהם מכוונים לאובייקטים, אך MySQLI מציעה גם ממשק API פרוצדוראלי.
שניהם תומכים בהצהרות מוכנות. הצהרות מוכנות מגנות מפני הזרקת SQL, וחשובות מאוד לאבטחת יישומי אינטרנט.
דוגמאות MySQL הן בתחביר MySQLI והן ב- PDO
בזה ובפרקים הבאים אנו מדגימים שלוש דרכים לעבוד עם PHP ו- MySQL:
- Mysqli (מכוון אובייקט)
- Mysqli (פרוצדוראלי)
- PDO
התקנת MySQLI
עבור לינוקס ו- Windows: סיומת MySQLI מותקנת אוטומטית ברוב המקרים, כאשר חבילת PHP5 MySQL מותקנת.
התקנת PDO
פתח חיבור ל- MySQL
לפני שנוכל לגשת לנתונים במסד הנתונים של MySQL, עלינו להיות מסוגלים להתחבר לשרת:
דוגמה (MySQLI מכוונת אובייקט)
$ servername = “localhost”;
$ username = “שם משתמש”;
$ סיסמא = “סיסמה”;
?php
// צור חיבור
$ conn = חדש mysqli ($ שם שירות, $ שם משתמש, $ סיסמא);
// בדוק חיבור
אם ($ conn-> connect_error) Die (“החיבור נכשל:” . $ conn-> connect_error);
>
הד “התחבר בהצלחה”;
?>
הערה בדוגמה המכוונת לאובייקט למעלה:
$ connect_error נשבר עד PHP 5.2.9 ו -5.3.0. אם אתה צריך להבטיח תאימות לגרסאות PHP לפני 5.2.9 ו -5.3.0, השתמש בקוד הבא במקום:
// בדוק חיבור
אם (mysqli_connect_error ()) Die (“חיבור מסד הנתונים נכשל:” . mysqli_connect_error ());
>
דוגמה (MySQLI פרוצדוראלית)
$ servername = “localhost”;
$ username = “שם משתמש”;
$ סיסמא = “סיסמה”;
?php
// צור חיבור
$ conn = mysqli_connect ($ שם שירות, $ שם משתמש, $ סיסמא);
// בדוק חיבור
אם (!$ conn) Die (“החיבור נכשל:” . mysqli_connect_error ());
>
הד “התחבר בהצלחה”;
?>
דוגמה (PDO)
$ servername = “localhost”;
$ username = “שם משתמש”;
$ סיסמא = “סיסמה”;
?php
נסה $ conn = חדש pdo (“mysql: host = $ servername; dbname = mydb”, $ שם משתמש, $ סיסמא);
// הגדר את מצב השגיאה של PDO לחריג
$ conn-> setattribute (pdo :: attr_errmode, pdo :: errmode_exception);
הד “התחבר בהצלחה”;
> תפוס (pdoexception $ e) הד “חיבור נכשל:” . $ e-> getMessage ();
>
?>
הערה: בדוגמת ה- PDO שלמעלה יש לנו גם ציין מסד נתונים (MYDB). PDO דורש מסד נתונים תקף כדי להתחבר אליו. אם לא צוין בסיס נתונים, נזרק חריג.
עֵצָה: היתרון הגדול של PDO הוא שיש לו מחלקת חריגים לטפל בבעיות שעלולות להתרחש בשאילתות מסד הנתונים שלנו. אם חריג נזרק בניסיון < >חסום, התסריט מפסיק להוציא לפועל ולזרום ישירות לתפוס הראשון () < >לַחסוֹם.
סגור את החיבור
החיבור ייסגר באופן אוטומטי כאשר הסקריפט מסתיים. כדי לסגור את החיבור לפני, השתמש בדברים הבאים:
כיצד לחבר PHP למסד הנתונים של MySQL
בבלוג זה אנו נותנים סקירה של MySQL, מדוע הוא משמש בדרך כלל לצד PHP, ועוברים כיצד לחבר PHP למסדי נתונים של MySQL.
- מה זה mysql?
- למה לחבר PHP ל- MySQL?
- כיצד לחבר PHP למסד הנתונים של MySQL
- סקריפט לדוגמא לחיבור מסד נתונים של MySQL ל- PHP
- שיקולי אבטחה בעת השימוש ב- MySQL ו- PHP
- MySQL ו- PHP: הכנסת הפרלמנט לערימת המנורה
- מחשבות סופיות
מה זה mysql?
MySQL היא האפשרות הפופולרית ביותר לקוד פתוח למערכת ניהול מסדי נתונים יחסית (RDBMS). זה עומד בתקני SQL ומספק פונקציות RDBMS פופולריות כמו טריגרים, חיבור וצפיות.
ולמפתחים שכבר מכירים פתרונות RDBMS כמו DB2 ו- Oracle, MySQL קל גם הוא. MariaDb הוא מזלג של mysql. אתה יכול להשתמש במידע הוא הבלוג הזה לחיבור MariaDB ל- PHP גם כן.
למה לחבר PHP ל- MySQL?
מטרת פתרונות PHP רבים היא לספק גישה מבוססת אינטרנט לתוכן דינמי’S מאוחסן במאגר. PHP תומך במערכות ניהול מסדי נתונים רבות כולל MySQL, MariaDB, DB2, MongoDB, Oracle, PostgreSQL ו- SQLITE.
כיצד לחבר PHP למסד הנתונים של MySQL
להלן שני שלבים לחיבור PHP למסד הנתונים של MySQL.
1. השתמש בתוספים כדי לחבר את מסד הנתונים של MySQL ב- PHP
PHP מספק שלוש תוספות בהן תוכלו להשתמש בהן:
- חבר יישומי PHP עם MySQL (ו- MariaDB).
- אחזר מידע על שרת מסד נתונים.
- נהל שגיאות שנוצרו משיחות מסד נתונים
- עבדו עם רשומות מסד נתונים באמצעות פונקציות Create, Cread, Update ו- Delete (CRUD).
שלוש התוספים ש- PHP מספקת להתחבר ל- MySQL כוללים את MySQLI, MySqlind ו- PDO_MYSQL.
סיומת mysqli
MySQLI ב- PHP תומך ב- MySQL 4.1 וחדש יותר. MySqli מכונה גם MySQL השתפר.
סיומת mysqlnd
בדרך כלל מכונה נהג מקומי MySQL, MySqlind מספק תשתית ילידת PHP לכל תוספי MySQL, והיא מהווה תחליף להפחתת LibmysQlclient. זה’חשוב לציין כי mysqlnd אינו מספק API. קרא את התיעוד למידע נוסף.
סיומת PDO_MYSQL
PDO_MYSQL מספק ממשק Object Object (PDO) של PHP (PDO) למסדי נתונים של MYSQL שהוא שכבת הפשטה של גישה לנתונים.
2. הוסף הצהרות SQL לפונקציות PHP
על ידי שימוש בתוספי MySQL בסקריפטים של PHP, אתה יכול להוסיף את הצהרות ה- SQL הבאות בפונקציות PHP CRUD כדי לעבוד עם רשומות מסד הנתונים של MYSQL:
כדי לציין אילו רשומות יהיו מעורבות, אתה יכול להשתמש במקום בו סעיפים. בדרך כלל, הערכים שההצהרות SQL צריכות יגיעו מערכי צורת אינטרנט וייצגו כמשתנים בסקריפט PHP.
סקריפט לדוגמא לחיבור מסד הנתונים של MySQL ולהפוך את שאילתות MySQL ב- PHP
להלן דוגמה פשוטה לתסריט PHP המשתמש בשיחות המסופקות על ידי סיומת MySQLI כדי לבחור רשומות ממסד נתונים של MySQL:
זכור כי ה- DBMS יאכוף את אותן אילוצים על הצהרות ה- SQL המבוצעות באמצעות PHP מכיוון שהוא כל ממשק אחר למסד הנתונים. הניסיונות להכניס רשומות עם מפתחות כפולים יידחו. קוד נכון צריך לכלול בדיקות לתנאי שגיאה בחיבור מסד הנתונים (מוצג לעיל) וכן את ביצועי השאילתה.
כדוגמה, ניתן היה להכניס את הקוד הבא לאחר השיחה ‘mysqli_connect’ כדי לאמת כי התקבל חיבור מוצלח בין PHP ל- MySQL (ראה עוד כיצד לבדוק את חיבור MySQL שלך כאן):
אם (mysqli_connect_error ())
באופן דומה, ניתן להשתמש בשיחת ‘mysqli_query’. ‘Mysqli_error ()’ מחזיר תיאור מחרוזת של השגיאה האחרונה ואילו ‘mysql_errorno ()’ מחזיר את מספר השגיאה.
שיקולי אבטחה בעת השימוש ב- MySQL ו- PHP
אתה צריך לשמור על אבטחה בחזית העיצוב של היישום וגם ליישום.
אחת הדרכים להבטיח אבטחת מידע היא באמצעות סיומת ‘המסנן’ המסופקת ל- PHP המספקת מספר סוגי פילטר כולל ‘אימות’ ו- ‘Sanitize’.
הזרקת SQL
הזרקת SQL היא בדיוק מה שהשם מרמז על כך שהוא מזריק נתונים/הצהרות להצהרת SQL. שקול את הצהרת ה- SQL להצהרה הבאה:
בחר * מ- dbtable איפה לקוח = $ שם;
נניח עוד כי הערך עבור $ שם מגיע מצורת אינטרנט (ככל הנראה הנחת שמירה מכיוון שזו ככל הנראה יישום PHP. ללא היגיינה נאותה של צורת האינטרנט או אימות הנתונים המשתמש יכול להזין את הדברים הבאים לשם:
ג'ון; קטע מכירות;
זה יביא להצהרות ה- SQL הבאות:
בחר * מ- dbtable איפה הלקוח = ג'ון; קטע מכירות;
כעת, כאשר זה מבוצע בנוסף להצהרת הנבחרת המתבצעת, יימחקו הרשומות מטבלת המכירות – לא סביר מאוד שזו התוצאה שרצינו. אז איך נוכל למנוע את התרחשות זה? דרך אחת היא עם הצהרות מוכנות. עם הצהרה מוכנה, במקום לשלוח שאילתה גולמית (כמו שהראיתי לעיל) למנוע מסד הנתונים אנו אומרים לראשונה למסד הנתונים את מבנה השאילתה שתוגש.
כיצד להימנע מהזרקת SQL
כדי להימנע מהזרקת SQL, השתמש בשאילתה מוכנה המגדירה מצייני מקום לפרמטרים של הצהרת השאילתה ואז קושר ערכים לפרמטרים אלה. בואו נסתכל על דוגמא אחרת, הפעם ישמש תוסף SQL:
הכנס לערכי DBTable (שם) ($ שם);
בשלב זה עדיין ניתן לקבל הצהרות זדוניות המוזרקות באמצעות הנתונים המיוצגים על ידי משתנה NAME $ המועבר למסד הנתונים. בואו נשנה את ההצהרה לעיל כדי לשלוח מציין מיקום למנוע מסד הנתונים:
הכנס לערכי DBTable (שם) (?);
כעת, הזרקה אינה אפשרית מכיוון שלא נשלח שום ערך (משתנה או מילולי).
ההצהרה הפרמטרית (המכונה לעיתים תבנית) נשלחת למנוע מסד הנתונים באמצעות פונקציית MySQLI_Prepare ().
אז איך אנחנו ממש מקבלים את הערך עצמו למסד הנתונים? זה נעשה עם הפונקציה MySQLI_STMT_BIND_PARAM () ולבסוף, ההצהרה מבוצעת באמצעות הפונקציה MySQLI_STMT_EXECUTE ().
בואו נניח את כל זה בדוגמה:
מכיוון שהמשתנים הכבולים נשלחים למנוע מסד הנתונים הנפרדים מהשאילתה שלא ניתן להפריע להם. מנוע מסד הנתונים משתמש בערכים ישירות בנקודת הביצוע לאחר ניתוח ההצהרה עצמה.
שים לב שהפרמטר השני לפונקציה ‘mysql_stmt_bind_param ()’ הוא מחרוזת לציון ‘סוג (ים)’ עבור הערכים המועברים. במקרה זה מועבר רק ערך אחד וערך זה יש סוג של מחרוזת. יש להרחיב את הקוד לעיל כדי לכלול בדיקת שגיאות לאורך הדרך בכל ביצוע פונקציית מסד נתונים.
אם אתה משתמש ב- Zend Server בסביבתך, אתה מודע לכך שיש לך:
- פונקציות כמו מעקב אחר קוד.
- Z-ray לפרופיל יישומים.
פונקציות אלה יכולות לחשוף נתונים מהיישום כגון ערכי שאילתת נתונים. מה שאולי אינך מודע אליו הוא ששרת זנד כולל גם את היכולת להסוות נתונים לפונקציות, מזהים ומפתחות – כמו גם ערכים.
MySQL ו- PHP: הכנסת הפרלמנט לערימת המנורה
MySQL ו- PHP הם חלקים אינטגרליים של ערימת המנורה בכל מקום שהיא ערימת רכיבים המספקים את היכולת לפתח וגם לפרוס יישומים מבוססי אינטרנט עם תוכן דינמי.
יישומי פרודוקטיביות פופולריים – כמו וורדפרס, דרופל, מג’נטו, זנקארט ואחרים – כולם מנצלים את הערימה הזו. הם משתמשים בו כדי ליישם פתרונות פרודוקטיביות באיכות גבוהה ומוכנה לארגון בניהול קשרי לקוחות (CRM), מסחר אלקטרוני, מערכת ניהול תוכן (CMS) ומרחבים אחרים.
יישומים אלה בדרך כלל מופיעים בגישתם להתקנה/תצורה ומסתמכים על גישה קהילתית הן לפיתוח והן לתמיכה. ניתן להשיג תמיכה בכיתה ארגונית בסוגים אלה של פתרונות ממספר מקורות כולל צוות OpenLogic ב- Perforce.
הערה: ראשי התיבות של המנורה מתייחסת למערכת ההפעלה (Linux), שרת אינטרנט (Apache), מערכת ניהול מסדי נתונים (DBMS) ושפת סקריפט (PHP). אבל המציאות היא שאותה ערימה זמינה בשלל מערכות הפעלה כולל Windows (WAMP) ו- IBM I (IAMP). התרשים הבא מייצג את הערימה:
מחשבות סופיות
יישומי אינטרנט, בין אם שולחניים או ניידים, הם דרכים עוצמתיות להכניס נתונים לידי העובדים, הלקוחות או בעלי העניין האחרים שלך כדי לתמוך בכל מספר דרישות כולל מסחר, תכנון משאבים ובניית מידע ושיתוף.
PHP ו- MySQL הם שני כלים יקרי ערך להביא נתונים לרשת הן באמצעות יישומי לקוחות וכן פתרונות קוד פתוח קיימים על בסיס טכנולוגיות אלה.
מתכנן להשתמש בערימת המנורה?
Zend יכול לעזור לצוות שלך לפתח אסטרטגיה ליישום פתרונות PHP/MySQL – ולספק תמיכה לפתרונות המיושמים בטכנולוגיות אלה.
צור קשר עוד היום עם הצוות שלנו כדי לראות כיצד שירותים מקצועיים של Zend יכולים לעזור לך להגיע ליעדי הפיתוח שלך.
צור קשר