看板 PHP 關於我們 聯絡資訊
<?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