PDA

View Full Version : سوال: فیلدی که Not Null تنظیم شده اما می شود اما رشته خالی بدان اضافه می شود ؟



mehran6764
دوشنبه 29 آذر 1395, 11:41 صبح
من یک جدول دارم که فیلدهاش ایناست ID,Name , Family همه فیلدها رو Not null تنظیم کردم ولی موقعی که از داخل MySQL میخوام رکوردی رو اضافه کنم حتی اگر فامیلی رو خالی بزارم بازم رکورد درج میشه ..




CREATE TABLE my_table(
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
family VARCHAR(255) NOT NULL

)



ایجور که سرچ کردم رشته خالی به معنی Null نیست (البته من رشته ای هم وارد نکردم ) - دلیلش چیه که همچین اتفاقی می افته ؟

**

سمت php هم خالی بودن رشته رو با این کد چک می کنم ولی بازم حتی اگه رشته خالی باشه بازم این کد نتیجه true رو برمی گردونه . نکنه به خاطر فارسی بودن رشته اس ؟




if (strlen($content)>0) {


// not empty

}

plague
دوشنبه 29 آذر 1395, 18:26 عصر
همونجوری که گفتی کاراکتر خالی null نیست
دلیل اینکه شما کاراکتر خالی میگیری مقدار دیفالت فیلد ها هستش که در صورت ارسال نشدن مقدار میگیرن
مثلا دیفالت int عدد 0 هستش
دیفالت varchar هم '' هستش
یعنی اگه شما ردیف ثبت کنی تو دیتابیس و این مقادیر رو وارد نکنی برای ردیف این مقدار دیفالت ثبت میشه

شرط هم که گزاشتی به راحتی fail میشه چون شما یه سری کاراکتر ها رو مثل اسپیس یا فضای خالی با چشم نمیبینی ولی اونجا هستن و شمرده میشن مثلا این رو اگه اجرا کنی


$x = ' ' ;
echo strlen($x);



میبینی که خروجی 1 بهت میده
راهش اینه که قبل از اجرای شرط تابع trim رو اجرا کنی روی متغیر تا فضا های خالی اضافه رو از بین ببره