من یکی دو ماهی هست برنامه نویسی یاد گرفتم الان یک مشکل دارم
من میخوام خروجی لینک بشکل زیر باشه
domain.com/Y5PkEx/title
من میخوام وقتی دارم یک پست ارسال کنم به دیتا بیس (در تیبل پست)
یکی برای تیبل پست و دیگری برای کد 6 کارکتری رندم
به این صورت که من از فانکشن زیر استفاده میکنم
function randstring62($len) { $str = ""; $a = str_shuffle("abcdefghijklmnopqrstuvwxyzABCDEFGHIJK LMNOPQRSTUVWXYZ0123456789"); $str .= substr($a, 1, $len); return $str; } randstring62(6);و کد مخصوص رو میسازم
سلام
برای انجام اینکار اول اون کد رندوم رو باید تولید کنی و بعد کد رو با یک select روی جدول strings_six بررسی کنی که وجود داره یا نه. اگر وجود داشت یک کد دیگه تولید کنی. اینجا باید توجه کنی که این مراحل تا پیدا شدن یک کد منحصربفرد باید ادامه پیدا کنه.
بعد از پیدا شدن، اون کد رو توی جدول strings_six باید insert کنی. حالا برای پیدا کردن id جدول strings_six چند تا راه وجود داره، مثالها رو با pdo میزنم:
۱. بعد از insert کردن توی جدول یک کوئری دیگه بزنی روی جدول و آخرین id رو برگردونی:
try { $_mHandler = new PDO("mysql:host=localhost;dbname=database_name", "username","password"); $statement_handler = $_mHandler->prepare("SELECT id FROM strings_six ORDER BY id DESC LIMIT 1" ); $execResult = $statement_handler->execute(); $result = $statement_handler->fetch(); var_dump($result); } catch (PDOException $e) { echo "error:" . $e->getMessage(); }
۲. مانند مثال بالا یک کوئری بزنی ولی دفعه از توابع mysql استفاده کنی:
try { $_mHandler = new PDO("mysql:host=localhost;dbname=database_name", "username","password"); $statement_handler = $_mHandler->prepare("SELECT LAST_INSERT_ID()" ); $execResult = $statement_handler->execute(); $result = $statement_handler->fetch(); var_dump($result); } catch (PDOException $e) { echo "error:" . $e->getMessage(); }
۳. از توابع خود pdo استفاده کنی:
try { $_mHandler = new PDO("mysql:host=localhost;dbname=database_name", "username","password"); $statement_handler = $_mHandler->prepare("INSERT INTO strings_six (`code`) VALUES ('random_code')" ); $execResult = $statement_handler->execute(); var_dump($_mHandler->lastInsertId()); } catch (PDOException $e) { echo "error:" . $e->getMessage(); }
که پیشنهاد من راه سوم هست.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)