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

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

0xfo7d 18-02-09 19:27

PHP | איך לעשות בדיקה אם משתנה שווה למשהו ממערך | כנסו ותבינו
 
אהלן...

יש לי מערך בגודל X (זה דינאמי...לכן מספר המקומות במערך אינו קבוע).

אני מעוניין ליצור שאילתת שליפה ממסד נתונים...בסגנון הבא:
PHP קוד:

$res3 mysql_query("SELECT * FROM `tablename` WHERE `filed`='".$abc."' AND `filed2`='".$part."' "); 

אני בעצם רוצה לשלוף נתונים מהמסד...רק נתונים שהשדה FILED2 שלהם שווה לאחד מהתאים של המערך...

נניח יש לי 3 תאים במערך...ששוים ל:
3,4,7

אז שישלוף את כל הנתונים מהטבלה שבהם השדה FILED שווה ל 3/4/7 .

תודה מראש,
מתן.

tbm 18-02-09 20:00

ציטוט:

WHERE `filed`='".$abc."' AND `filed2`='".$part[0]."' or `filed2`='".$part[1]."' or `filed2`='".$part[2]."'
תנסה ככה

daMn 18-02-09 20:03

implode בשביל פירוק המערך לסטרינג בשביל השאילתא.
SQL IN בשביל החיפוש בשאילתא.

O-B 18-02-09 20:15

לדעתי אתה צריך להכניס את המספרים כך: /1/2/3/ ואז עם like לעשות
PHP קוד:

 $res3 mysql_query("SELECT * FROM `tablename` WHERE `filed` like '\".$abc."  "); 


DvirCohen 19-02-09 00:39

PHP קוד:

$query mysql_query("SELECT * FROM  `tablename` WHERE `field` = '"$abc ."' AND `field2` IN ("implode(","$part) .")"); 


intercooler3819 19-02-09 15:58

ציטוט:

נכתב במקור על ידי O-B (פרסם 698988)
לדעתי אתה צריך להכניס את המספרים כך: /1/2/3/ ואז עם like לעשות
PHP קוד:

 $res3 mysql_query("SELECT * FROM `tablename` WHERE `filed` like '\".$abc."  "); 


לא הייתי נותן לך לתכנת את האתר שלי...
שאילתת LIKE זאת השאילתא הכי כבדה שיש (כמובן שאפשר לשרשר אותה ואז להגדיל את היעילות בצורה אקספוננציאלית אבל זה לא הנקודה)

עדיף לעשות מה שאמרו כאן למעלה
implode עם מפריד של פסיקים בשביל לקמבן סטרינג
ואת כל זה לשלב בשאילתת IN
זה הכיוון

vadimg88 19-02-09 16:10

זה גם לא נכון להשתמש ב LIKE במקרה הזה.

sholaman 20-02-09 00:09

תיצור מחרוזת ואת החלק של הWHERE תיצור עם FOREACH שיעבור על כל ערכי המערך

daMn 20-02-09 00:25

למה אתם מסתבכים סתם, הבאתי פתרון הכי נכון לבעיה.

Labs 20-02-09 00:27

תעשה פשוט
FOREACH
ו JOIN
הפתרון הכי פשוט בישבלך


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

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