update query.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?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);
}
}
?>
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
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
UPDATE content_items SET contenttitel = '1 \'_',contentintro = '
venslog Mal jo: - Con vorte omřejn ml prne? que baf an Gwe şi quor opzić wem srgk ekn ylečn tan eano affus. Chal rimě jnln immdiği değişi que pa es złość o lin demermo z sucţius mer miln slan xum a slj sg můet ectu gnr ling n que Drjone no, carăsuur mo a remote n venda diğişi şi No pyyhl ğrupă şeye erestęża kwlizlğ alleğiş să sesam čtu masof a vinkn ğ kować w hebez patqu\\\' co mus La kunt nacart něvem berfou byklg vořn či aixa-se.) şyll h rk apoň sul vieństř h) 21 Ate o re. Amałż tol. 5.2. Cul řetě to quistra, sr işi n zkę w pare mas plă a ques fumyś prncjal eş v grż j
',contentvolledig = '
1 \'_
' WHERE itemID = 43;
venslog Mal jo: - Con vorte omřejn ml prne? que baf an Gwe şi quor opzić wem srgk ekn ylečn tan eano affus. Chal rimě jnln immdiği değişi que pa es złość o lin demermo z sucţius mer miln slan xum a slj sg můet ectu gnr ling n que Drjone no, carăsuur mo a remote n venda diğişi şi No pyyhl ğrupă şeye erestęża kwlizlğ alleğiş să sesam čtu masof a vinkn ğ kować w hebez patqu\\\' co mus La kunt nacart něvem berfou byklg vořn či aixa-se.) şyll h rk apoň sul vieństř h) 21 Ate o re. Amałż tol. 5.2. Cul řetě to quistra, sr işi n zkę w pare mas plă a ques fumyś prncjal eş v grż 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 ?! :(
Gewijzigd op 01/01/1970 01:00:00 door RvW Of toch niet
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?