作者chan15 (ChaN)
看板PHP
标题[请益] update file问题
时间Wed Nov 17 13:46:51 2010
<?php
// 判断以及Sql Injecttion部份先略过
$a = $_POST['a'];
$b = $_FILES['file']['name'];
$sql = sprintf("UPDATE table SET a = %s, b = %s WHERE id = 1", $a, $b);
mysql_query($sql) or die(mysql_error());
?>
这是一般更新资料的语法
一般input的栏位如果资料没修改,可以透过传过来的旧资料update旧资料
但input file只会传空值过来,也就是说update input file时没传东西又没判断的话该
栏位会被清空
目前有两种方式
1. 直接在档案栏位旁边放input hidden,塞旧的档案名称
update时判断如果有上传新的档案就update新档案,没有的话就update input hidden
优点:效能好
缺点:DOM外漏总是不好
2. 写function呼叫出原始档案名称update
用function靠id调出原始档案名称,没有上传新档案的话用他来update
优点:较安全
缺点:效能较差,如果有5个档案就要query 5次
不知道有没有更好得作法
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.36.21.208
1F:推 Jerr:直接用primary key当file name, move_uploaded_file() 11/17 14:15
2F:→ chan15:您好,不是上传的问题,是没有上传判定更新档案栏位的问题 11/17 15:48
3F:→ arrack:没值不要update 不就好了... 11/17 18:03
4F:→ chan15:update是一个字串,如果要判断没有不加入的话 11/17 22:17
5F:→ chan15:那是不太可能的,5个file栏位就有120种组合 11/17 22:18
6F:推 Jerr:所以用 if( !empty($_FILES['file']) ) 包起来 ? 11/18 10:07