ik maak met de volgende code me update query en voer hem uit

<?php
public function dbUpdate($p_sTable, $p_aFieldList, $p_sWhere) {
        try {
            if (!($p_sTable and is_string($p_sTable))) {
                $l_sMsg = sprintf('Geen tabelnaam in %s. (param=%s:"%s")'
                    ,__METHOD__
                    ,gettype($p_sTable)
                    ,$p_sTable);
                throw new PDOException($l_sMsg);
            }
            elseif (!($p_aFieldList and is_array($p_aFieldList))) {
                $l_sMsg = sprintf('Geen fieldlist in %s. (param=%s:"%s")'
                    ,__METHOD__
                    ,gettype($p_aFieldList)
                    ,$p_aFieldList);
                throw new PDOException($l_sMsg);
            }
            elseif (!($p_sWhere and is_string($p_sWhere))) {
                $l_sMsg = sprintf('Geen WHERE-clausule in %s. (param=%s:"%s")'
                    ,__METHOD__
                    ,gettype($p_sWhere)
                    ,$p_sWhere);
                throw new PDOException($l_sMsg);
            }
            
            // alle parameters in orde
            $this->m_sWhere    = $p_sWhere;
            $this->m_sSql      = sprintf('UPDATE %s SET ', $p_sTable);
            foreach ($p_aFieldList as $sKey => $xVal) {
                $this->m_sSql .= sprintf('%s = %s,', $sKey, $this->quote($xVal));
            }
            // haal de laatste komma weg uit de sql, voeg de WHERE clausule toe en sluit de sql af met een ;
            $this->_sqlTrim();
            $this->_sqlWhere();
            $this->_sqlClose();
            
            $l_oStmt = parent::prepare($this->m_sSql);
            echo $this->m_sSql;  
            $l_oStmt->execute(); // DIT IS REGEL 260 
            $this->m_iAffectedRecs    = $l_oStmt->rowCount();
            return $this->m_iAffectedRecs;
        }
        catch(PDOException $e) {
            $this->_dbError($e);
        }
    }
?>

' en " gaan allemaal goed.

maar als hij en query maak als deze

UPDATE content_items SET contenttitel = '1 \'_',contentintro = '

venslog Mal jo: - Con vorte omí&#345;ejn mêl pröne? ¿que baf þá an Gwe &#351;i quor opzi&#263; wem sørgüçükü çekään öyle&#269;ný tan eðanção affus. Chal rim&#283; jünlön immédi&#287;i de&#287;i&#351;i þá que pað þes z&#322;o&#347;&#263; où élión demermož zí þúsuc&#355;ius mer milên íslan xum það Ísløj sög m&#367;žet ectu génér æling án que Därjone no, car&#259;suur mo è að þæremote în venda di&#287;i&#351;i î&#351;i No pyyhl ö&#287;rup&#259; &#351;eye eûrest&#281;&#380;a kwlizlü&#287;ü alle&#287;i&#351; s&#259; sesamž &#269;átu masof að vinäköön ö&#287;ü kowa&#263; w hebez à patqu\\\'à co à mus La kunt nacartï n&#283;žívem berfou büyüklægð vo&#345;ání ú&#269;i aixa-se.) &#351;öyllä há þærk apo&#328; sul vie&#324;st&#345;í h) 21 Atée où re. Ama&#322;ó&#380; tol. 5.2. Cul é ú&#345;ešt&#283;ž to quistra, sør i&#351;i îné úzk&#281; w pare mas pl&#259; að þó ques fuémy&#347; prêncjal e&#351; vå gró&#380; j
',contentvolledig = '

1 \'_
' WHERE itemID = 43;


krijg ik deze error

Regel: 260
Bestand: DbBeheer.class.php
Fout: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound

iemand enig idee ?! :(
Exact hetzelfde probleem als met jouw INSERT-queries, je gaat een query preparen (voorbereiden), zonder dat je de parameters een waarde opgeeft.

Overal waar een ? in de SQL staat, verwacht PHP dat er een parameter gaat komen, alleen schittert die door afwezigheid. Logisch gevolg, een dikke error.

Pas je werkwijze aan, het is zinloos om prepare() te gebruiken wanneer je geen prepare wilt gebruiken, dat kan je zelfs bugs opleveren. Gooi prepare dus weg, of ga hem gebruiken om een query te preparen. En dan uiteraard wel de benodigde parameters opgeven, anders slaat het weer helemaal nergens op.
Zo, en overzichtelijk programmeren?

Reageren