我有一个包含Clob字段的表(IBM DB2中是否有其他任何数据类型用于存储文本?)。所以,我有一篇文章(html + css + text)。我使用htmlspecialchars($text)
来准备文本。
然后我做下一件事:
$query="update tbl_lang_text set text='$text' where ownerid=$id and lang like '$lng' and type=1";
$stmt = db2_prepare($this->conn, $query);
$result = db2_execute($stmt);
所以我收到了一个错误。类似的东西:查询太大了。所以。如何用如此大的文本更新我的字段?
P.S。:测试文章包含28 154个带空格的字符。
答案 0 :(得分:1)
CLOB列最多可包含2 147 483 647个字符,因此不太可能导致错误。
什么可能是问题(即使不是你应该解决它),是你根本没有逃避输入。使用准备好的语句(即:db2_prepare
)是好的,但您仍然需要使用参数和值来转义数据:
$query = "update tbl_lang_text set text=?".
"where ownerid=? and lang like ? and type=1";
$stmt = db2_prepare($this->conn, $query);
$result = db2_execute($stmt, array($text, $id, $lng));
$text
很可能至少包含一个撇号'
,并且您的查询因此而失败。