作者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
推 Jerr:直接用primary key當file name, move_uploaded_file() 11/17 14:15
→ chan15:您好,不是上傳的問題,是沒有上傳判定更新檔案欄位的問題 11/17 15:48
→ arrack:沒值不要update 不就好了... 11/17 18:03
→ chan15:update是一個字串,如果要判斷沒有不加入的話 11/17 22:17
→ chan15:那是不太可能的,5個file欄位就有120種組合 11/17 22:18
推 Jerr:所以用 if( !empty($_FILES['file']) ) 包起來 ? 11/18 10:07