v2.5.2
Giriş yap

php pdo'da update işlemi

rotaile
1,536 defa görüntülendi ve 1 kişi tarafından değerlendirildi

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?

Cevap yaz
Cevaplar (9)
rotaile
1557 gün önce

burak söylediğin gibi yaptım oldu dostum çok teşekkür ederim

buraksuluk
1558 gün önce

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

buraksuluk
1558 gün önce

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']}");

buraksuluk
1558 gün önce

Sorgundaki boşlukları kaldırmayı denermisin?
$veriupdate=$db_name->prepare("UPDATE users_table SET kul_sifre=:kul_sifre WHERE kul_mail=:$kul_mail");

rotaile
1558 gün önce

ç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

samkofte
1558 gün önce

Bence Tayfun abinin BasicDb sınıfını kullan hem daha kolay hemde hatasız rahat bir şekilde yaparsın

rotaile
1558 gün önce

senin yazdığın kodun 1. satırında ki WHERE kul_mail =:kul_mail kodunda kul_mail'in başında $ işareti olmadığı için hata vermiş onu düzelttim fakat yine güncelleme yok else sine düştü

rotaile
1558 gün önce

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

gokcin
1558 gün önce

$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,'kul_mail'=>$kul_mail));

Böyle Denermisiniz?