我有一个网站,用户可以上传房地产的图像 表结构:
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会抛出异常,并且不会继续执行下一个命令。任何想法/建议将不胜感激。
答案 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。