تبدیل یک عدد 11 رقمی به integer
یک فیلد دارم که شماره همراه کاربری رو میگیرم باهاش . میخوام بگم که باید از نوع integer باشه .
من از کد زیر برای این کار دارم استفاده میکنم :
کد PHP:
(int) $_POST['tell']
مشکل اینجاست که وقتی کاربر شمارشو مثلا این اعداد وارد میکنه : 09123203857 در خروجی به این عدد تبدیل میشه : 2147483647
چرا؟ :d
یعنی باید این جور عدد هارو به صورت string ثبت کنم؟ با توابع زیادی تبدیل نوع کردم که نشد - مثلا settype - intval ولی نتیجه مشابه داشت .
پاسخ : تبدیل یک عدد 11 رقمی به integer
سلام، به دلیل اینکه اینتیجر ها در php سی و دو بیتی هستند و عدد شما خیلی بزرگ است، اگر برای ذخیره در دیتابیس میخواهید خود پی اچ پی از فرمت نامبریک میفهمد و برای ذخیره شماره تلفن از دیتا تایپ bigint یا varchar آستفاده کنید.
پاسخ : تبدیل یک عدد 11 رقمی به integer
نقل قول:
نوشته اصلی توسط
<?php?>
یک فیلد دارم که شماره همراه کاربری رو میگیرم باهاش . میخوام بگم که باید از نوع integer باشه .
من از کد زیر برای این کار دارم استفاده میکنم :
کد PHP:
(int) $_POST['tell']
مشکل اینجاست که وقتی کاربر شمارشو مثلا این اعداد وارد میکنه : 09123203857 در خروجی به این عدد تبدیل میشه : 2147483647
چرا؟ :d
یعنی باید این جور عدد هارو به صورت string ثبت کنم؟ با توابع زیادی تبدیل نوع کردم که نشد - مثلا settype - intval ولی نتیجه مشابه داشت .
دلیلی نداره شماره رو بصورت یه عدد تو دیتابیس ذخیره کنین !
بصورت text ذخیره کنین
وقتی عدد ذخیره میکنین دیتابیس یسری امکاناتی میده که نمیتونه برا عدد های بزرگتر بده ! و اون عدد 2147483647 در واحد زمان هست که حدود 40 سال بعده (بدردتون نمیخوره )