Sveiki izmantoju MAD veidotu mysqli klasi.
Var lūdzu kāds pateikt kā var uzzināt kāds auto increment id pirms iserto datubāzē kko.
Lasītāju vērtējums:
(0 balsis)Sveiki izmantoju MAD veidotu mysqli klasi.
Var lūdzu kāds pateikt kā var uzzināt kāds auto increment id pirms iserto datubāzē kko.
Ielogojies vai izveido profilu, lai komentētu!
+1 #111.02.2016. 14:38
Pirms inserts ir noticis to droši uzzināt nevar.
Tu vienīgi vari taisīt kveriju, kas pārbauda kāda ir tabulas nākamā "AUTO_INCREMENT" vērtība, bet, ja notiek divi pieprasījumi, kas taisa insertu vienlaicīgi, tad var gadīties (lai arī ne pārāk ticami, ja to insertu nav ļoti ļoti daudz), ka kamēr returno tos rezultātus un taisa insertu, ir paspējis izpildīties otrs, tāpēc tā nav labā prakse.
insert_id tu vari uzzināt pēc insert kverija izpildes.
0 #211.02.2016. 14:58
Man ir reģistrācijas forma un katram cilvēka reģistrējoties izveidojas unikāls kods 4 simboliem, baidos ka viņš var būt vienāds tapēc katra gribēju pielikt klāt +id, lai tiešām esmu pārliecināts, ka viņš nekad nebūs vienāds.
scripts:
function generateCode($length = 4)
{
$az = 'ABCCDEFGhijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$azr = rand(0, 51);
$azs = substr($az, $azr, 10);
$stamp = hash('sha256', time());
$mt = hash('sha256', mt_rand(5, 20));
$alpha = hash('sha256', $azs);
$hash = str_shuffle($stamp . $mt . $alpha);
$code = strtoupper(substr($hash, $azr, $length));
return $code;
}
mad @ 11.02.2016. 15:19 atbildēja:
Nu uztaisi funkciju, kas pārbauda vai kods jau ir izmantots, un ja ir, tad ģenerē no jauna.
IMHO 4 simboli ir baigi maz, lai būtu drošs, ka neatkārtosies.
mad @ 11.02.2016. 15:21 atbildēja:
BTW tā f-ja ir diezgan nejēdzīga. Kāda jēga tur definēt alfabētu, ja beigās argriež hash, kas var sastāvēt tikai no 16 (hex) simboliem? Viņa nekad neatgriezīs neko tālāk par F.
Rekur biki vienkāršāks un labāks variants, ja gribi pilnu alfabētu.
manuallvl @ 12.02.2016. 11:23 atbildēja:
tas kods varētu izskatīties šādi?
$var = $db->get_var("SELECT count(*) FROM `table` Where `qid` = '$qid'"); if($var < 0) {$newqid == generateCode(4);}else{$newqid == $qid;}
mad @ 12.02.2016. 12:00 atbildēja:
Es darītu apmēram tā:
manuallvl @ 12.02.2016. 12:12 atbildēja:
ā nu jā pēc mana piemēra viņš pārbauda tikai vienu reizi.
mad @ 12.02.2016. 15:01 atbildēja:
Vienalga.
manuallvl @ 15.02.2016. 12:14 atbildēja:
Man pietiks ar četriem, jo tā reģistrācija ir pasākumam kurā nereģistrēsies vairāk ka 100 cilvēki
0 #327.04.2016. 15:47