PDA

View Full Version : سوال: چک کردن یک رشته تصادفی در دیتابیس



amin7x
شنبه 23 آبان 1394, 16:57 عصر
سلام
من یک رشته دارم که تصادفی تولید میشه و حالا میخوام برای اینکه 100% مطمئن بشم منحصر به فرده میخوام توی دیتابیسم چکش کنم که اگر کد وجود داشت یک کد جدید تولید کنه.
ممنون میشم کمکم کنید
من خودم کد زیر رو نوشتم اما مشکی که داره اینکه درصورتی که کد وجود داشته باشه یک بار کد جدید میسازه و اگر کد جدید هم وجود داشته باشه هیچ کاری انجام نمیده.



for($i = 0;$i < 10; $i++) {
$number = randomCodeFunction();
$select = $db_connection->prepare("SELECT `***` FROM `***` WHERE `***` = :*** LIMIT 1");
$select->execute(array(':***' => $number));
if($select->rowCount() > 0) {
$create = $this->db->prepare("INSERT INTO `***` (***)
VALUES (:***)");
$create->bindparam(":***", $number);
$create->execute();
} else {
$new_number = randomCodeFunction();
$create = $this->db->prepare("INSERT INTO `***` (***)
VALUES (:***)");
$create->bindparam(":***", $new_number);
$create->execute();
}
}

anvar
شنبه 23 آبان 1394, 19:25 عصر
برای تولید همچنین رشته هایی بهتره از توابع بومی ایجاد رشته های یونیک یا اصطلاحا Guid استفاده کنید این رشته های تولید شده بصورت گارانتی شده انحصاری هستند و نیازی هم به چک کردن آنها نیست(در ms sqlserver توابع توکاری برای تولید خودکار رشته های guid وجود داره اما در mysql مطمئن نیستم)

لینک زیر مثال عملی داره
http://tutsnare.com/how-to-create-guid-in-php/

برای تکرار یک عمل هم از دستور While استفاده کن.

djtrex
شنبه 23 آبان 1394, 20:58 عصر
اگه از mysql استفاده می کنید و نیاز دارید از توابع خود mysql استفاده کنید دو تابع uuid و uuid_short وجود داره:
https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_uuid
https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_uuid-short

در غیر این صورت همون طور که دوست عزیز دیگه گفتن میتونید توی یه while یا do while اول چک کنید قبلا توی دیتابیس نیست بعد insert کنید.

+ پیشنهاد میکنم فیلد/ستون مورد نظرتون رو unique تعریف کنید.

amin7x
یک شنبه 24 آبان 1394, 10:11 صبح
برای تولید همچنین رشته هایی بهتره از توابع بومی ایجاد رشته های یونیک یا اصطلاحا Guid استفاده کنید این رشته های تولید شده بصورت گارانتی شده انحصاری هستند و نیازی هم به چک کردن آنها نیست(در ms sqlserver توابع توکاری برای تولید خودکار رشته های guid وجود داره اما در mysql مطمئن نیستم)

لینک زیر مثال عملی داره
http://tutsnare.com/how-to-create-guid-in-php/

برای تکرار یک عمل هم از دستور While استفاده کن.


اگه از mysql استفاده می کنید و نیاز دارید از توابع خود mysql استفاده کنید دو تابع uuid و uuid_short وجود داره:
https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_uuid
https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_uuid-short

در غیر این صورت همون طور که دوست عزیز دیگه گفتن میتونید توی یه while یا do while اول چک کنید قبلا توی دیتابیس نیست بعد insert کنید.

+ پیشنهاد میکنم فیلد/ستون مورد نظرتون رو unique تعریف کنید.

ممنون اما الگوریتم تولید اعداد من فرق داره و باید از همون استفاده بشه.
ممنون میشم حلقه while رو با مثال دستورات دیتابیس بهم بدید.

پ.ن: ممنون این قابلیت unique توی Mysql خیلی جالب بود.