توی تابع bind_param، نوع دادهها به این شکل تعریف میشه:
i: عدد صحیح (integer)
d: عدد اعشاری (float)
s: رشته (string)
b: دادههای باینری (blob)
حالا اگه بخوایم طبق کدی که توی ویدیو نوشته شده پیش بریم، کد نهایی اینجوری میشه:
$sql = "INSERT INTO people (fullname,age,sex,isSingle) VALUES (?, ?, ?, ?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('sisi', $user['fullname'], $user['age'], $user['sex'], $user['isSingle']);
محسن موحد۰۴ دی ۱۴۰۳، ۱۵:۱۳
با سلام
متغیر جنسیت رو من 0 و1 در نظر گرفتم و int
و چک کردم دیدم این خطا زمانی که if چک میشه داده میشه
ساناز سلمانی۰۶ دی ۱۴۰۳، ۱۱:۴۵
بله درست میگید خطا از execute نیست، if رو نگاه ننداختم، شما prepare رو با دستور execute اجرا کردید و نباید دستور query رو اجرا کنید و همچنین query رو نمیتونید قابلیت placeholder یعنی از علامت سؤال استفاده کنید. این قابلیت مربوط به prepare هست و از sql injection جلوگیری میکنه.
بنابراین داخل بعد از execute برای اینکه چک کنید اینسرت بدرستی انجام شده قبل ازینکه close به چند روش میتونید موفقیت اجرای کوئریو متوجه بشید: