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

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

Erez | TrustMedia.co.il 13-01-09 13:35

קבלת ID בעת ההכנסה
 
אני רוצה לעשות בשאילתא אחת הכנסה למסד ולקבל את הID של השורה שהכנסתי באותה השאילתא
מישהו מכיר דרך?

vadimg88 13-01-09 13:39

2 דרכים:

1. להשתמש ב mysql_insert_id דוגמא:

PHP קוד:

   mysql_connect("localhost""mysql_user""mysql_password") or
       die(
"Could not connect: " mysql_error());
   
mysql_select_db("mydb");

   
mysql_query("INSERT INTO mytable (product) values ('kossu')");
   
printf ("Last inserted record has id %d\n"mysql_insert_id()); 

2. לבצע שאילתה נוספת שתקח את ה MAX(id) ככה שתקבל את ה ID הכי גבוה -> האחרון שנוסף. (תקף רק אם ה id מוגדר ל auto_increment או שאתה מעלה אותו באחד כל הזמן).

Erez | TrustMedia.co.il 13-01-09 13:44

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

vadimg88 13-01-09 13:50

ציטוט:

mysql_insert_id — Get the ID generated from the previous INSERT operation
http://il2.php.net/mysql_insert_id

Erez | TrustMedia.co.il 13-01-09 13:52

אוקיי תודה רבה

Adir 13-01-09 18:47

תגידו, יש סיכוי שMAX(id) יחזיר בטעות ID של המשתמש אחר שנרשם באותו רגע ?

intercooler3819 13-01-09 19:03

כמובן..
במערכות במימדים עצומים לדוגמא פייסבוק שנרשמים נניח 1000 איש בשניה (מספר רנדומלי ושקרי לחלוטין) אי אפשר להשתמש בשתי שאילתות

vadimg88 13-01-09 21:42

כן במקרה כזה עדיף להשתמש ב LAST_INSERT_ID() ככה זה יחזיר את המספר האחרון שנוסף. וגם אם נוספו 2 רשומות באותו רגע אחת לא יכולה להתחלף עם השנייה בטעות או בזדון.


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

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