مشکل در نوع داده boolean و ثبت عدد 0 در هر صورت

پرسیده شده
فعالیت 1389 روز پیش
دیده شده 749 بار
0

سلام جناب دکتر آوند بزرگوار... یک سوال مهم دارم... بنده در کوئری insert برای داده isSingle که کاملا مطابق آموزش نوع داده اون رو boolean در جدول تعریف کردم. اما هر کاربری که اضافه می کنم حتی اگر مقدار ۱ را به داده isSingle اضافه کردم هم عدد ۰ در اطلاعات جدول people درج می شود.. من کد مربوط به ساخت جدول و مراحل prepare statement را که برای امن کردن اطلاعات کاربر هست رو به همراه نحوه add کردن کاربر جدید با کوئری insert و متد insert_id انجام میدم رو براتون میفرستم لطفا بررسی کنید که اشکال بنده در این رابطه کجا هست که در هر صورت مقدار صفر برای این داده در جدول برمی گرده!!

 

کد مربوط به ساخت جدول با sql

$sql = "
    CREATE TABLE people(
        id int PRIMARY KEY AUTO_INCREMENT,
        fullname varchar(256),
        age int UNSIGNED,
        sex ENUM ('f','m'),
        isSingle boolean DEFAULT 1 
    );";

کد مربوط به تابع امن کردن اطلاعات کاربر با متد insert_id

function addUser($userData){
    GLOBAL $mysqli;
    $sql = "INSERT INTO people (fullname,age,sex,isSingle) VALUES(?,?,?,?)";
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param("sisb",$userData['fullname'],$userData['age'],$userData['sex'],$userData['isSingle']);
    $stmt->execute();
    return $stmt->insert_id;
}

کد مربوط به add کردن کاربر با تابع addUser

$user_id = addUser(array('fullname'=>'Mahdi', "age"=>50 , "sex"=>"m" , "isSingle"=>1));

 

با تشکر جناب دکتر آوند عزیز

فایل پیوست

2
حذف شده
    $stmt->bind_param("sisi",$userData['fullname'],$userData['age'],$userData['sex'],$userData['isSingle']);

پارامتر اول bind_param رو عوض کردید؟ sisi به جای b که به boolean اشاره داره i بزارید چون نوع دادتون تغییر کرده. بی زحمت اینو هم امتحان کنید

فایل پیوست

امیر صالحی

توسط

امیر صالحی

26 تیر 99

حذف شده
درود این درست شد... ممنون جناب صالحی... نمونه آخری که استاد آوند هم از طریق insert_id در ویدئو انجام میدن رو هم دقت کنید. کاربری که با نام zahra اضافه می کنن علی رغمی که خودشون هم isSingle رو براش 1 تعیین می کنن ولی وقتی تو محیط cmd اطلاعات جدول رو میارن مقدار 0 ثبت میشه... دقیقا مشکل تو این مثال همین نوع داده boolean بوده که البته در sql هم نداریم این نوع داده رو و من در stackoverflow هم بررسی کردم که گفته شده معادل boolean تو mysql بهتره tinyint استفاده شه... باز هم ممنون از شما جناب صالحی
حذف شده
خواهش میکنم وطیفه بود. خوش حالم که مشکلتون حل شد.
امیر صالحی

26 تیر 99

0
حذف شده

سلام 

کد هات رو بزار بتونم کمکت کنم 

فایل پیوست

میثم نصرتی

توسط

میثم نصرتی

25 تیر 99

2
حذف شده

سلام و احترام

قبل تر فکر کنم یه همچین مشکلی من داشتم. نوع isSingle رو از boolean به tinyint تغییر بده و طولشو بزار ۱ که طول بیشتر از ۱ رو قبول نکنه.

 

فایل پیوست

امیر صالحی

توسط

امیر صالحی

25 تیر 99

حذف شده
درود متاسفانه با این کار هم مشکل حل نشد.