سلام
دلیلش اینکه که کوئری شما ایراد داره. بررسی کنید ببینید خطاش چیه؟ اول از همه نام ستون ها را در تک کوتیشن قرار ندهید بلکه از ` (accent) استفاده کنید.
به شکل زیر کوئری خود را اجرا کنید تا اگر خطایی داشت. متن خطا نمایش یابد.
if (!$stmt->execute()) {
print_r($stmt->errorInfo());
}
یک راه دیگه خطایابی کوئری این است که با دستور echo $sql; رشته کوئری را نمایش دهید برخی خطاها چشمی مشخص میشود ممکنه در تایپ یک متغیر اشتباه کرده باشید، فاصله اضافه و ... بعد کوئری را در phpmyadmin اجرا کنید و خطای آن را ملاحظه کنید. اگر از روی خطا متوجه نشدید مشکل چیه حتما متن خطا و ساختار دیتابیس خود را ارسال کنید.
در ضمن جهت مقابله با حملات اسکویل اینجکشن به این شکل کوئری خود را اصلاح کنید.
$sql="INSERT INTO student (`STD-ID`, `NAME`) VALUES (?, ?)";
$stmt=$db->prepare($sql);
$stmt->execute(array($stdid1, $name));