Value toy auto_increment

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
apoelista88
Δημοσιεύσεις: 19
Εγγραφή: 11 Σεπ 2005 03:11

Value toy auto_increment

Δημοσίευση από apoelista88 » 07 Φεβ 2009 13:31

Pedia kalimera sas. I voithia pou tha ithela an kapios gnorizei einai pws na pareis ton arithmo pou tha mpi se ena auto increment arithmo prin kanw to insert query.

Psaxnontas arketa i moni lisi pou vrika einai na xrisimopoias to "mysql_insert_id();" to opoio den tha vgazei to swsto apotelesma an to telefteo row exei diagrafei.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Value toy auto_increment

Δημοσίευση από dva_dev » 07 Φεβ 2009 13:49

Το νούμερο που θα μπεί σε ένα autonumber πεδίο δεν το γνωρίζει κανένας, ούτε η ίδια η βάση δεδομένων. Ακόμα και αυτή τον μαθαίνει ακριβώς τη στιγμή που πάει να κάνει το insert, δεν το ξέρει εκ των προτέρων.
to opoio den tha vgazei to swsto apotelesma an to telefteo row exei diagrafei.
Τι εννοείς; Οταν έχεις διαγράψει την εγγραφή με id=12 (αν το id είναι αυτοnumber), και πας να κάνεις insert το mysql_insert_id θα σου πεί ότι έβαλε το 562 ενώ έχει βάλει το 13;
Εμπιστέψου αυτό που σου δίνει η database, αυτή ξέρει καλύτερα τι σημαίνει autonumber. Οτι και να σου γυρίσει σημαίνει ότι αυτό το νούμερο έβαλε.

Αν εσύ σβήνοντας το 12, στο επόμενο Insert δεν θέλεις να πάρεις το 13 αλλά θέλεις να πάρεις πάλι το 12, ζητάς κάτι άλλο και όχι το autonumber.
Πες ότι έχεις 12 εγγραφές με id από 1 εώς 12, και κάνεις insert. Παίρνεις id=13. Σβήνεις μετά τις εγγραφές με id από 3 εώς 10 (αφήνεις δηλαδή τις εγγραφές με id 1,2,11,12,13). Το αμέσως επόμενο insert που θα πάρεις τι id πρέπει να έχει; Το 14 ή το 3;

apoelista88
Δημοσιεύσεις: 19
Εγγραφή: 11 Σεπ 2005 03:11

Value toy auto_increment

Δημοσίευση από apoelista88 » 07 Φεβ 2009 14:05

an exw id apo 1 ews 12 kai kanw insert to neo id tha ine 13. An kanw delete to telefteo row to telefteo id apothikevmeno stin vasi dedomenwn tha ine to 12 alla an kano insert to new id tha ine 14 swsta? egw tha ithela na parw to 14 kai oxi to 12.

Efxaristw.

apoelista88
Δημοσιεύσεις: 19
Εγγραφή: 11 Σεπ 2005 03:11

Value toy auto_increment

Δημοσίευση από apoelista88 » 07 Φεβ 2009 14:09

afto pou 3exasa na anaferw ine oti tha ithela to 14 prin kanw insert tin defteri fora stin vasi dedomenwn.

Me liga logia na 3erw to value tou id pou einai auto_increment prin kanw insert

Άβαταρ μέλους
Pavel
Honorary Member
Δημοσιεύσεις: 1046
Εγγραφή: 08 Αύγ 2003 00:05
Τοποθεσία: UK

Value toy auto_increment

Δημοσίευση από Pavel » 07 Φεβ 2009 14:41

Με μια γρήγορη αναζήτηση, δοκίμασα το παρακάτω και μάλλον είναι αυτό που ζητάς:

Κώδικας: Επιλογή όλων

$query = mysql_query("SHOW TABLE STATUS LIKE 'tablename'") or die(mysql_error());

$row = mysql_fetch_array($query);

echo $row["auto_increment"];
Πηγή: http://www.htmlforums.com/databasing/t- ... 53053.html

Google is your friend
Εσύ είσαι τρελός.

apoelista88
Δημοσιεύσεις: 19
Εγγραφή: 11 Σεπ 2005 03:11

Value toy auto_increment

Δημοσίευση από apoelista88 » 07 Φεβ 2009 14:43

efxaristw file mou. To ixa vri kai egw prin 2 lepta kai telika ine afto pou epsaxna. Sas efxaristw kai tous dio

Afto pou xrisimopoiw egw:

Κώδικας: Επιλογή όλων

 $b = "SHOW table status from DB_NAME where name = 'TBL_NAME'";
					$a = mysql_query($b);
					$result = mysql_fetch_assoc($a);
					$autoincrement = $result["Auto_increment"];

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Value toy auto_increment

Δημοσίευση από dva_dev » 07 Φεβ 2009 15:41

Τι γίνεται σε πέρίπτωση που υπάρχουν καμία 10ριά χρήστες στη βάση δεδομένων;
Διαβάζει ο 1ος το $autoincrement (έστω 14).
Μέχρι να κάνει το insert πηγαίνει ο έλεγχος στον 2ο και διαβάζει και αυτός το $autoincrement (πάλι 14).
Μέχρι να κάνει το insert πηγαίνει ο έλεγχος στον 3ο και διαβάζει και αυτός το $autoincrement (πάλι 14). Κάνει ο 3ος το insert κανονικά.
Πάει ο έλεγχος στον 7ο, διαβάζει το $autoincrement (τώρα 15). Κάνει insert και πηγαίνει πάλι ο έλεγχος στον 1ο. Κάνει ο πρώτος το insert; Με τι δεδομένα; (το autonumber που ξέρει είναι το 14 που έχει κάνει ήδη καταχώρηση η 3ος χρήστης).

apoelista88
Δημοσιεύσεις: 19
Εγγραφή: 11 Σεπ 2005 03:11

Value toy auto_increment

Δημοσίευση από apoelista88 » 07 Φεβ 2009 15:45

poli swsti paratirisi kai afto tha prepei na to prose3i o programmatistis analoga me tin peristasi. Stin efarmogi tin diki mou den pezi rolo afou to diavasma tou id kai to insert ginontai sxedon taftoxrona enw xrisimopoiite kai pantote apo ena xristi

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Value toy auto_increment

Δημοσίευση από dva_dev » 07 Φεβ 2009 16:02

Το 'νομίζω θα το χρησιμοποιήσει μονο ένας χρήστης' από το ΄θα το χρησιμοποιεί αποκλειστικά και μόνο ένας χρήστης' μπορεί να είναι η λεπτομέρεια που θα φέρει την καταστροφή.
Αν πάντως υπάρχει η δυνατότητα να χρησιμοποιήσεις transactions (start transaction, commit) κάντο. Αν και θα σε γλυτώσει από αρκετά προβλήματα, δεν είναι πανάκεια.

Πάντως εξακολουθώ να πιστεύω ότι κάτι δεν πάει καλά στη λογική. Δεν πρέπει να ξέρεις τι θα είναι το επόμενο id που θα καταχωρηθεί. Αυτό που πρέπει ναθέλεις είναι αυτό που μόλις καταχωρήθηκε.

[edit]
Το "σχεδόν ταυτόχρονα" είναι τεράστιος χρόνος για τους υπολογιστές. Αυτό που κάποιος βλέπει να γίνεται "ταυτόχρονα" μπορεί να είναι τόσο μεγάλο χρονικό διάστημα που να έχουν εκτελεστεί εκατομμύρια εντολές και εκατοντάδες διαδικασίες να έχουν ξεκινήσει και να έχουν ολοκληρωθεί.
[/edit]
Τελευταία επεξεργασία από το μέλος dva_dev την 07 Φεβ 2009 16:05, έχει επεξεργασθεί 1 φορά συνολικά.

apoelista88
Δημοσιεύσεις: 19
Εγγραφή: 11 Σεπ 2005 03:11

Value toy auto_increment

Δημοσίευση από apoelista88 » 07 Φεβ 2009 16:05

fisika an itan sto nomizw den tha to ekana me afto ton tropo. Opos sou ipa stin diki mou efarmogi xrisimopoiite pantote mono apo ena xristi kai to value afto xrisimopoiite taftoxrona me to insert.

Fisika megalo rolo pezi kai se ti tha xrisimopoiithi to value pou pernis

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Value toy auto_increment

Δημοσίευση από fafos » 07 Φεβ 2009 16:06

symfono me ton dva_dev.. einai lathos na epeksergazese ta monadika id.. an theleis na kaneis short tis eggrafes dhmiourghse ena neo pedio sthn vash sto opoio mporeis na dineis akrivhs arithmitikh akolouthia..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

apoelista88
Δημοσιεύσεις: 19
Εγγραφή: 11 Σεπ 2005 03:11

Value toy auto_increment

Δημοσίευση από apoelista88 » 07 Φεβ 2009 16:10

den ta epe3ergazomai. Apla ta xrisimopoiw san reference se kati allo

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Value toy auto_increment

Δημοσίευση από cherouvim » 07 Φεβ 2009 17:58

Γιατί θες το auto increment id;

apoelista88
Δημοσιεύσεις: 19
Εγγραφή: 11 Σεπ 2005 03:11

Value toy auto_increment

Δημοσίευση από apoelista88 » 07 Φεβ 2009 18:00

to xrisimopoiw gia na katigoriopioisw kapies ikones pou ginontai amesa upload analoga me to id pou tha dimiourgithi ekini ti stigmi.

Elpizw na katalaves :P

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Value toy auto_increment

Δημοσίευση από cherouvim » 07 Φεβ 2009 18:06

Ελπίζω να χρησιμοποιείς transactions και το InnoDB engine.

Κώδικας: Επιλογή όλων

set autocommit=0;
insert into foo set info='test';
insert into foo set info=@@identity;
commit;
select * from foo;

+----+------+
| id | info |
+----+------+
|  1 | test |
|  2 | 1    |
+----+------+

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες