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

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

Tyler 16-02-15 18:39

מחיקת נתונים זהים בטבלה במסד + הוספת נתונים לשורה זהה
 
שכחתי להוסיף אפשרות ON DUPLICATE KEY כשכתבתי את הקוד, ועכשיו אחרי זמן מה שהוא כבר עובד, הנתונים שמתווספים למסד פשוט חוזרים על עצמם לפעמים עם כל התחברות של המשתמש.

כל פעם שהמשתמש מתחבר הcode שלו משתנה אבל הuser נשאר זהה. זה יוצר לי מצב שהמסד שלי נראה ככה:

user: test
code: blablah
email: test@domain.com

user:test
code:123132
email: test@domain.com

user:test
code:987654331
email: test@domain.com

בקיצור, המון rows עם נתונים זהים.

עכשיו לשאלה שלי, כמו שאמרתי יש כבר המון נתונים זהים במסד, יש דרך פשוט למחוק את כל הrows בטבלה שיש להן לדוגמא אותו ID? חשבתי לעשות delete from table where user=x אבל זה לא שיש רק USER אחד עם מספר נתונים, יש המון יוזרים עם נתונים זהים.

יש דרך אז למחוק את כל הrows שיש במקביל להן עוד rows עם אותו ערך בuser?

בנוסף לזה, אחרי מחיקת כל הכפילויות אני לא רוצה שייכנסו עוד כפילויות בעתיד,
אז פשוט את החלק הבא בקוד:

PHP קוד:

"INSERT INTO logs (user, code, email) VALUES('$user', '$code', '$email')"

אני משנה ל
PHP קוד:

"INSERT INTO logs (user, code, email) VALUES('$user', '$code', '$email') ON DUPLICATE KEY UPDATE code = '$code'"

ובמקביל מגדיר את ערך הemail וuser במסד בתור unique.

ואז בעצם כל פעם שהמערכת תזהה כניסה של אותו היוזר, רק הערך של הקוד ישתנה ולא יהיו יותר כפילויות בטבלה.

נכון?

BarSpecial 17-02-15 17:50

גוגל..
http://stackoverflow.com/questions/1...duplicate-rows

Tyler 19-02-15 01:57

ציטוט:

נכתב במקור על ידי BarSpecial (פרסם 894404)

הגעתי כבר לתוצאה זאת ולעוד 10 כמוהה דרך הגוגל ודרך אתרים אחרים.
לא הבנתי את הSYNTAX ולא הבנתי איך לעשות את זה בדרך הכי יעילה, יש המון דרכים שכותבים עליהן ואין דרך אחת חד משמעית.. מבלבל.

מה בנוגע להכנס נתונים למסד כשיש כבר שורה עם אותו הID בטבלה? פה צדקתי בשורת הקוד?

HagaiA 20-02-15 12:30

למה שלא תשנה לUPDATE?


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

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