看板 PHP 關於我們 聯絡資訊
※ 引述《Notte (why so serious ?)》之銘言: : 因為該頁前端 需要五張圖 : 所以在資料庫只放了一筆資料 紀錄五張圖的存取位置 : 後台的設計 也寫好五張圖去撈資料庫的位置 : 如果我一次上傳五張 那麼結果是正常的 : 問題是 如果我再次去上傳更改某一張圖 那麼其餘四張會變成空值 : 我是用UPDATE SET 去更改上傳過的圖 : 但因為四張沒改而抓不到POST的值而導致空值 : 請問我應該要怎麼改寫才比較正確呢??? 簡單回一下推文大概是怎麼樣@@ chemberlain:把五張圖放進陣列,serialize後再寫進資料庫 c大的意思是假設五張圖的路徑方別是1,2,3,4,5 那麼把這五個路徑放進陣列並讓他沉睡(利用serialize) a = array(1,2,3,4,5) b = serialize(a),再把b放進資料庫欄位裏,這樣在資料庫內就只需要一個欄位 要更改的時候讀取資料庫的欄位,然後重新喚醒他 a = unserialize(b) 這時候a陣列就會是(1,2,3,4,5)了 再分別放入輸入欄內更改就行了,類似 foreach($a as $a_val){ echo "<input type='text' name=a[] value='$a_val'>"; } 送出後,再讓a沉睡成b在寫入資料庫就可以了 這種方式跟 crossdunk:如果你不想改資料庫結構,我建議是五個都抓出來 08/05 10:26 → crossdunk:都放進去input text裡面 改要改的 這樣沒改的也會有值 差不多,都是把值都叫出來,有改的改沒改的不動, 在一起更新,只是後者不用改資料庫結構 Bambe:所以才說你要在程式裡加工,讓空值也不要一起update進去 這種方法比較麻煩,其實小弟孤陋寡聞,也不懂是什麼意思 自以為大概是不用撈資料庫的值,分別開五個輸入欄代表五張圖 有值的就是要改的,沒值的代表不更動 直接用if($輸入欄=='')來判斷要輸入的sql指令 $sql = 'update xxx set '; if($pic1!='') $sql .= 'pic1 = ".$pic1."'; 類似這樣,不過我不知道你是用哪種方式使用資料庫的,所以隨便打打而已 大致上就是這樣吧 賺賺P幣XD 感謝各位先進觀看 有錯請指正囉 QQ -- Sent from my 3cm -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.120.19.218 ※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1407289915.A.FAF.html
Bambe:你得到他了XD... 以前比較喜歡在後端處理東西~~~~ 08/06 22:12
GTBUG:順便請問一下 這類狀況 選擇json_encode是不是也可 08/08 11:50
GTBUG:聽說是json效能贏serialize 但不太會處理物件 08/08 11:51
GTBUG:請問確實是這樣嗎? 08/08 11:52
crossdunk:json_encode我只會用js去抓,不會用php.. 08/08 16:13
Bambe:json與serialize的比較可以參考這篇 http://0rz.tw/uRGj0 08/09 01:00
GTBUG: 了解!! 感恩: ) 08/11 11:26
Notte: 感恩! 我太晚回來看XD 還是謝謝各位的分享與指教! 08/24 17:07