🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ علیرضا ابراهیمی
مشکل در نوع داده boolean و ثبت عدد 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));

 

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

سلام 

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

میثم ۲۵ تیر ۱۳۹۹، ۱۸:۲۵

سلام و احترام

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

 

امیر صالحی ۲۵ تیر ۱۳۹۹، ۲۰:۳۴
    $stmt->bind_param("sisi",$userData['fullname'],$userData['age'],$userData['sex'],$userData['isSingle']);

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

بهترین پاسخ
امیر صالحی ۲۶ تیر ۱۳۹۹، ۰۵:۱۵