php pdo'da update işlemi
if (isset($_POST['datapost'])) {
$kul_mail = $_POST['kul_mail'];
$kul_sifre = $_POST['kul_sifre'];
$kullanicisor = $db_name->prepare("SELECT * FROM users_table WHERE kul_mail=:kul_mail");
$kullanicisor -> execute(array('kul_mail' => $_POST['kul_mail']));
$say = $kullanicisor -> rowCount();
if ($say>0) {
print($say);
print(" kullanıcı var <br>");
//burdan sonrasında sıkıntı var
$veriupdate=$db_name->prepare("UPDATE users_table SET kul_sifre =: kul_sifre WHERE kul_mail =: $kul_mail");
$update = $veriupdate->execute(array("kul_sifre" => $kul_sifre));
if ($update) {
print(" Güncelleme Başarılı.");
}
else{
print(" Güncelleme yok..");
}
}
else{
print(" Kullanıcı yok");}
}else{
print("Hata"); }
Sorum: post'tan gelen değere göre WHERE koşlunu yazıyorum ve sıkıntı yok fakat alt kısımda UPDATE yaparken güncelleme yok kısmına düşüyor bunun sebebi nedir?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (9)
Eğer senin yazdığın gibi çalışmasınıda istiyorsan
$kul_mail = $_POST['kul_mail'];
$kul_sifre = $_POST['kul_sifre'];
$kullanicisor = $db_name->prepare("SELECT * FROM users_table WHERE kul_mail=:kul_mail");
$kullanicisor -> execute(array('kul_mail' => $_POST['kul_mail']));
$say = $kullanicisor -> rowCount();
if ($say>0) {
print($say);
print(" kullanıcı var <br>");
//burdan sonrasında sıkıntı var
$veriupdate=$db_name->prepare("UPDATE users_table SET kul_sifre =:kul_sifre WHERE kul_mail=:kul_mail");
$update = $veriupdate->execute(array(
'kul_mail' => $kul_mail,
'kul_sifre' => $kul_sifre
));
if ($update) {
print(" Güncelleme Başarılı.");
}
else{
print(" Güncelleme yok..");
}
}
else{
print(" Kullanıcı yok");}
}else{
print("Hata"); }
yani where koşuna execute diyorsun ama array içinde bunu belirtmiyorsun sanırım hata bu yukarıda ikinci yazdığım
mesajda doğrudan where koşuluna değişken ile update yapabilirsin bu şekildede yapabilirsin nasıl istersen
Pardon yanlış yazmışım boşluk ve iki noktayı Tayfun hoca şu cevap düzenleme sayfasını yap artık :)
$veriupdate=$db_name->prepare("UPDATE users_table SET kul_sifre=:kul_sifre WHERE kul_mail=$kul_mail");
veya
$veriupdate=$db_name->prepare("UPDATE users_table SET kul_sifre=:kul_sifre WHERE kul_mail={$_POST['kul_mail']}");
Sorgundaki boşlukları kaldırmayı denermisin?
$veriupdate=$db_name->prepare("UPDATE users_table SET kul_sifre=:kul_sifre WHERE kul_mail=:$kul_mail");
çok basit bir hata var bu iş çözülürse bir sıkıntı klamıycak fazla uzatmak istemediğim için onu kullanmak biraz abes kaçar dostum önerin için teşekkür ederim, peki yazdığım kodun neresinde hata var fark edebildin mi? bir hata göremiyorum ama update yapamıyorum
gökcin söylediğin gibi denedim fakat yazdığın kodun ikinci satırında bir hata verdi, hatada şu
Uyarı: PDOStatement :: execute (): SQLSTATE [HY093]: Geçersiz parametre numarası: bağlı değişken sayısı C: wamp64 www Home_Buddy php pass-refresh-operation.php içindeki belirteç sayısıyla eşleşmiyor satır 23