הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   2 שאלות MYSQLI ו שליחת מיילים (https://hosts.co.il/forums/showthread.php?t=102211)

MAORBARI 24-01-13 18:37

2 שאלות MYSQLI ו שליחת מיילים
 
1. אם אני עושה ב MYSQLI שאילתא בתוך לולאה.. זה יעבוד? כלומר הרי וא מכניס לזכרון שאילתא חדשה ומוחק את הישנה איך הוא זוכר בסוף הלולאה לחזור אליה, הרי לא שמים לו משתנה בתור ארגומנט.. למשל:
PHP קוד:

$mysqli->query("SELECT * FROM cats");
while(
$cat $mysqli->fetch_assoc()) {

$mysqli->query("SELECT * FROM catalog WHERE cat=".$cat);
$prods $mysqli->fetch_assoc();



אז זה יעשה שגיאה או שזה כל כך מתוחכם וידע מתי לפנות לאיזו שאילתא?

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

תודה !

yonatan 24-01-13 22:07

לעבוד עם Mailing List מסודר דרך האחסון , לשלוח מייל אחד ... ולא לעשות את זה דרך PHP.

אדיר 24-01-13 22:59

1.
א'. לא עושים את זה מלכתחילה כמו שעשית כאן -
את ה- query אתה שם במשתנה וכל המשך העבודה על השאילתה הזו עוברת דרך המשתנה הזה בלבד.
תחזור קצת לדוגמאות קוד של עבודה בתצורה מונחית עצמים תראה איך עושים את זה..

ב'. למה אתה צריך 2 שאילתות? אפשר להסתפק בשאילתה אחת יעילה ומהירה יותר עם JOIN (תדאג לאינדקסים מתאימים).

MAORBARI 25-01-13 02:01

ציטוט:

נכתב במקור על ידי xPerfection (פרסם 869113)
1.
א'. לא עושים את זה מלכתחילה כמו שעשית כאן -
את ה- query אתה שם במשתנה וכל המשך העבודה על השאילתה הזו עוברת דרך המשתנה הזה בלבד.
תחזור קצת לדוגמאות קוד של עבודה בתצורה מונחית עצמים תראה איך עושים את זה..

ב'. למה אתה צריך 2 שאילתות? אפשר להסתפק בשאילתה אחת יעילה ומהירה יותר עם JOIN (תדאג לאינדקסים מתאימים).

אני נתתי דוגמה, זה לא משהו אמיתי, לא באמת אכפת לי אם זה יחפש ARRAY או באמת ערך הקטע הוא,
אם אני עושה שאילתא ואחר כך עושה לולאה על RESULT כמו שעשיתי..
בתוכה עושה עוד שאילתה, אז בסיום הסיבוב של הלולאה הוא יתייחס ב fetch_assoc לשאילתא שהייתה בתוך הלולאה ולא במה שמחוץ לה.. אתה מבין את הבעיה שלי?

אדיר 25-01-13 10:15

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

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

Unikan 25-01-13 12:52

קוד:

$query1 = $mysqli->query("SELECT * FROM cats");
while($cat = $query1->fetch_assoc()) {

$query2 = $mysqli->query("SELECT * FROM catalog WHERE cat=".$cat);
$prods = $query2->fetch_assoc();

}

אבל כמו שאמרו מעלי, מאוד לא יעיל להשתמש בשאילתות SQL בתוך לולאות.

MAORBARI 25-01-13 14:17

ציטוט:

נכתב במקור על ידי Unikan (פרסם 869147)
קוד:

$query1 = $mysqli->query("SELECT * FROM cats");
while($cat = $query1->fetch_assoc()) {

$query2 = $mysqli->query("SELECT * FROM catalog WHERE cat=".$cat);
$prods = $query2->fetch_assoc();

}

אבל כמו שאמרו מעלי, מאוד לא יעיל להשתמש בשאילתות SQL בתוך לולאות.

אז אני אספר לכם מה יש לי ותגידו לי מה א]שרי לעשות..
יש לי במסד טבלה בשם cats
עכשיו בתוך זה אני רוצה לשאוב את כל הנתונים שיצאו ככה, קודם כל לקלוט את כל השורות איפה ש PARENT = 0 (קטגוריית אב) אחר כך לשאוב את כל מה שנמצא תחת הקטגורייות האלה, ואז גם תחת אלה, עד שהגיע למצב שאותן קטגוריות, לא מופיעות בשום parent.. כלומר הן לא קטגוריות אב של שום קטגורייה אחרת...
איך אני שולף את הנתונים מבלי לולאה..? (בצורה הזאת אני מקבל את הנתונים בצורה מסודרת וכל אחד תחת המקום המתאים לו..)
תודה..
לא נראלי אפשרי..


כל הזמנים הם GMT +2. הזמן כעת הוא 23:48.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ