使用Zend_DB_Table Raw SQL增加值

时间:2009-09-13 18:05:46

标签: exception zend-db-table increment fetchall

我有一个网站,用户可以上传房地产的图像 表结构:

image_id
property_id
userid
filename
thumbfilename
display_order
timestamp

场景:     当用户上传多张图片时,他/她应该能够从他们上传的图片中为指定的图片设置主要照片。

代码:

$sql = 'UPDATE property_images SET display_order = display_order + 1 WHERE property_id = "' . $this->_request->getParam('propertyid') . '"';
$images->getAdapter()->fetchAll($sql);
$images->update(array("display_order" => 1), 'image_id = "' . $this->_request->getParam('imageid') . '"');

问题:     调用$ images-> getAdapter() - > fetchAll()时收到“常规错误”;但是,SQL已成功执行,但Zend_DB_Table会抛出异常,并且不会继续执行下一个命令。任何想法/建议将不胜感激。

2 个答案:

答案 0 :(得分:0)

1)首先,要认识到您需要修复代码,以便逃避用户输入。您目前非常容易受到SQL注入攻击。

2)为什么要将UPDATE查询传递给fetchAll()?

3)看Zend_Db_Expr

答案 1 :(得分:0)

没关系,

解决方案:

$ sql ='UPDATE property_images SET display_order = display_order + 1 WHERE property_id =“1004”AND display_order< 3; $图像 - > getAdapter() - >查询(SQL $); $ images-> update(array(“display_order”=> 1),'image_id =“2003”');

在设置显示顺序分别为1和2到2和3的图像后,这将抓取第三个图像并将其设置为1。