SQL Sorgu Sınıfı


İyi günler tablo sorgusu için hazırladığım fonksiyondan aldığım çıktı ile sorgu yapmaya çalışıyorum Try bloğu çalışıyor ancak veritabanında veri güncellemiyor sorguyu elle girdim yine aynı sizce sorun ne olabilir = takılıdım
else
{
$hata=null;
$sx=COUNT($durumsor);
$sb=$sx-1;//Dizi değerden geldiği için dizilerde indis 0 dan başladığı için 1 eksik çekiyoruz
for($a=0; $a<=$sb; $a++)
{
if($a==0)
{
$sql="\"update siteayar set ".$durumsor[$a].",";
$ext="\"".$extsor[$a]."\"=>\"".$degersor[$a]."\",";
}
elseif($a!=$sb)
{
$sql .= $durumsor[$a].",";
$ext .= "\"".$extsor[$a]."\"=>\"".$degersor[$a]."\",";
}
else
{
$sql .= $durumsor[$a]."\"";
$ext .= "\"".$extsor[$a]."\"=>\"".$degersor[$a]."\"";
}
}
//return(array($sql,$ext));
return ($this->kaydet($sql,$ext));
}
}


Array
(
[0] => "update siteayar set siteadi=:siteadial,slogan=:sitebaslik,description=:acikla,hakkinda=:hakkindalani,copright=:telif,logo=:favicon"
[1] => "siteadial"=>"Acilsağlık.Net","sitebaslik"=>"Sağlık Hesaplama Araçlarıaa","acikla"=>"","hakkindalani"=>"","telif"=>"Tüm hakları saklıdır ","favicon"=>""
)

Kodun çıktı hali try bloğu çalışıyor veritabanında işlemiyor hata nerdedir? çıktı olarak verdiği çıktıdan deneme yaptım işliyor :(


private function kaydet($sql,$ext)
{
try
{

$sor=$this->vt()->prepare($sql);
$sor->execute(array($ext));
$durum="Güncelleme başarılı";
}
catch(PDOException $i)
{
$hata="K-0003";
$durum="Hata Detayı ".$i->getMessage();
}
if(!isset($hata))
{
return(array("durum"=>$durum));
}
else
{
return(array("hata"=>$hata,"durum"=>$durum));
}
}



::::::::: Çözüm ::::::::::::::::::


Yukarıda vermiş olduğum else bloğunu değiştirin :)

else {
$sql = array();
$ext = array();
for ($a = 0; $a < count($durumsor); $a++) {
$sql[] = $durumsor[$a];
$ext[$extsor[$a]] = $degersor[$a];
}
$sql = implode(', ', $sql);

return self::kaydet($sql, $ext);
}

Kaydet fonksiyonunu güncelleyin


private function kaydet($sql,$ext)
{
try
{
$ssql="update siteayar set ".$sql."";
$sor=$this->vt()->prepare($ssql);
$sor->execute($ext);
$durum="Güncelleme başarılı";
}
catch(PDOException $i)
{
$hata="K-0003";
$durum="Hata Detayı ".$i->getMessage();
}
if(!isset($hata))
{
return(array("durum"=>$durum));
}
else
{
return(array("hata"=>$hata,"durum"=>$durum));
}
}

Bu çözüme iğrenç ötesi ingilizcemle ulaştım :) Stackoverflow Teşekkürler num8er :D