Jump to content
php.lv forumi

Recommended Posts

Posted

es gan zinu par mysql_insert_id(), ar kuru var atgriezt tikko ievietotā ieraksta id, bet man šoreiz vajadzība pirms ieraksta ievietošanas tikt pie id ar kādu tas tiks pievienots.

 

man šķiet ka šāda iespēja ir, bet nenieka vairs nevaru atrast. kurš var palīdzēt?

Posted

hm. ja nevar, ta nekā. citādāk jādomā darīt.

 

MakaTaNaw, ja būtu iespēja nākamo id dabūt, tad man nebūtu viens debīls kods daudz jāmaina. būšu kļūdījies, domāju ka to var izdarīt.

Posted (edited)

Iespejams tā:

$rezultats = mysql_query("SHOW TABLE STATUS LIKE 'tabulas_nosaukums'");

$rinda = mysql_fetch_array($rezultats);

$id = intval($rinda['Auto_increment']);

echo $id;

 

Protams ar nosacijumu ka id ir kā Auto_increment lauks.

Edited by localhero
Posted

localhero, pa to laiku kamēr uzzini šo id, var tikt ievietots jau cits ieraksts (kāds cits lietotājs pieprasa / izsūta / utt to pašu skriptu... )

Posted (edited)

1)

$query = 'SELECT MAX(id) FROM `tabula`';

$results = mysql_query($query);

$row = mysql_fetch_row($results);

$id = $row[0]+1;

Mīnuss, pie aktīvākiem pieprasījumiem ID var dublēties.

 

2)

Vēl ir variants, ievieto tukšus datus tabulā, ar mysql_insert_id() iegūsti ID un pēc tam veic Update attiecīgajam ierakstam.

Mīnuss, divas reizes tiek papildināta datubāze.

 

localhero jau pasteidzās :)

Edited by Aleksandrs
Posted (edited)

Nu jāizdara tā lai pieprasījums tiek veikts tieši pirms id izvades. Man ir vienā vietā šāds scripts un strādā ideāli. man ir forma kur pēdējam laukam ir onblur() atribūts kas iedarbina caur Ajax pieprasījumu kas noskaidro Auto_increment nākamo vērtību. Kā jau kāds teica ja nav zināms kam tas vajadzīgs tad nevar neko īsti pateikt. Iespējams arī taisīt MySQL trigeri.

Edited by localhero
Posted

Normālās sistēmās izmanto tā saukto numuru rezervāciju - ja tiešām vajag šo ID uz priekšu - glabā citā tabulā ID un reference (email vai vēl kaut kas)...

Vēlāk pēc reference atrod ID un insertē...

Insertēt ar tukšo ID nav gluži loģiski, jo uz to tiek veidots PrimKey pamatā.

Posted

Aleksandra piemēram ir viens mīnus:

Iespējams ka tu vēlēsies izdzēst tieši pēdējo ierakstu. Un tādā gadījumā max(id) samazināsies par 1 Savukārt Auto_increment vērtība saglabāsies iepriekšējā.

Posted

$query = mysql_query(SHOW TABLE STATUS LIKE tablename);
$row = mysql_fetch_array($query);
$next_id = $row[‘Auto_increment’];

 

Bet kā jau minēja, nav visai labi, ko šādu izmantot.

Posted

Un vai reāli nav iespējams pēc tam operēt ar atgriezto mysql_insert_id, lai veiktu sazin kādas darbības? Moš plānošanas vaina.

×
×
  • Create New...