php make sql查询。但表没有更新?

时间:2016-06-27 22:42:55

标签: php

我更新了表{bu}在<?php class updte extends ayar { function control($adi = null, $baslik = null, $acikla = null, $hakki = null, $telifx = null, $logoc = null) { $siteadi = trim($adi); $sitebaslik = trim($baslik); $aciklama = trim($acikla); $hakkinda = trim($hakki); $telif = trim($telifx); $logo = trim($logoc); $durumsor = array(); $extsor = array(); $degersor = array(); if (isset($siteadi)) { $isle = self::siteadi($siteadi); array_push($durumsor, $isle["sorgu"]); array_push($extsor, $isle["ext"]); array_push($degersor, $isle["deger"]); } if (isset($sitebaslik)) { $isle = self::sitebaslik($sitebaslik); array_push($durumsor, $isle["sorgu"]); array_push($extsor, $isle["ext"]); array_push($degersor, $isle["deger"]); } if (isset($aciklama)) { $isle = self::aciklama($aciklama); array_push($durumsor, $isle["sorgu"]); array_push($extsor, $isle["ext"]); array_push($degersor, $isle["deger"]); } if (isset($hakkinda)) { $isle = self::hakkinda($hakkinda); array_push($durumsor, $isle["sorgu"]); array_push($extsor, $isle["ext"]); array_push($degersor, $isle["deger"]); } if (isset($telif)) { $isle = self::telif($telif); array_push($durumsor, $isle["sorgu"]); array_push($extsor, $isle["ext"]); array_push($degersor, $isle["deger"]); } if (isset($logo)) { $isle = self::favicon($logo); array_push($durumsor, $isle["sorgu"]); array_push($extsor, $isle["ext"]); array_push($degersor, $isle["deger"]); } if (!isset($durumsor[0])) { $hata = "K-0002"; $durum = "Null query"; return (array("err" => $hata, "status" => $durum)); } 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 = "" . $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 self::update($sql, $ext); } } private function update($sql, $ext) { try { $ssql = "\"update siteconfig set " . $sql . "\""; $dizi = array($ext); $sor = $this->vt()->prepare($ssql); $sor->execute(array($ext)); $durum = "successful"; } catch (PDOException $i) { $hata = "K-0003"; $durum = "Error Detail " . $i->getMessage(); } if (!isset($hata)) { return (array("durum" => $durum, $dizi, $ssql)); } else { return (array("hata" => $hata, "durum" => $durum)); } } private function siteadi($i) { $stn = "siteadi=:siteadial"; $ext = "siteadial"; return (array("sorgu" => $stn, "ext" => $ext, "deger" => $i)); } private function sitebaslik($i) { $stn = "slogan=:sitebaslik"; $ext = "sitebaslik"; return (array("sorgu" => $stn, "ext" => $ext, "deger" => $i)); } private function aciklama($i) { $stn = "description=:acikla"; $ext = "acikla"; return (array("sorgu" => $stn, "ext" => $ext, "deger" => $i)); } private function hakkinda($i) { $stn = "hakkinda=:hakkindalani"; $ext = "hakkindalani"; return (array("sorgu" => $stn, "ext" => $ext, "deger" => $i)); } private function telif($i) { $stn = "copright=:telif"; $ext = "telif"; return (array("sorgu" => $stn, "ext" => $ext, "deger" => $i)); } private function favicon($i) { $stn = "logo=:favicon"; $ext = "favicon"; return (array("sorgu" => $stn, "ext" => $ext, "deger" => $i)); } } 函数

中传递参数的类
PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\xampp\htdocs\hesapla\kutuphane\sinif\ayar2.sinif.php on line 148

但我的问题是,当我尝试调用更新表时,我得到PDO Exception,如:

self::update($sql, $ext)

我尝试调试传递给Array ( [0] => "update siteconfig 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"=>"" ) 的参数。

所以他们在这里:

{{1}}

1 个答案:

答案 0 :(得分:1)

错误说:

  

PDOStatement :: execute():SQLSTATE [HY093]:参数号无效:   绑定变量的数量与令牌的数量不匹配

所以你输入了答案:

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="".$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 self::update($sql,$ext);
}

参见[1]你传递的是字符串,而不是数组。

所以这是解决方案:

改变这个:

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::update($sql, $ext);
}

到此:

ex1 = sample(50, x=c("A","B"), replace=TRUE)
ex2 = sample(50, x=c("A","B"), replace=TRUE)
getDescriptionStatsBy(factor(ex1),ex2,html=TRUE,useNA="no",statistics=TRUE,add_total_col="last”)