$stmt = $db->prepare("INSERT INTO users VALUES ('',?,?,?,?,?,?)");Öncelikle INSERT komutunu ben sizin yerinizde olsam aşağıdaki gibi yapardım. Sizin yaptığınız da yanlış değil fakat hangi sütun hangi değişkene geliyor eşleştirmek , daha az hata yapmanızı sağlar.
$stmt = $db->prepare("INSERT INTO users (sutun1, sutun2, sutun3) VALUES (?,?,?)"); gibi.
İkincisi ise hata aldığınız yer. Sorgunuzda kaç adet soru işareti kullandıysanız, bindparam komutunun 1. parametresinde o kadar s koymalısınız. Siz 4 adet s koymuşsunuz fakat 6 adet değişken var. Bu string olduğu için s olarak yazılıyor. Farklı değerler alabilir.
Yanlış:
$stmt->bindparam('ssss', $nm, $gd, $pn, $mail, $user, $pass);Doğru:
$stmt->bindparam('ssssss', $nm, $gd, $pn, $mail, $user, $pass);Kısacası değişken kadar soru işareti, soru işareti kadar "s" kullanmalısınız.
Kolay gelsin.