2011-04-10 30 views
4

我有這個連載數據,我的MySQL數據庫如何更新連載數據在MySQL

a:4:{i:0;s:7:"bvl.png";i:1;s:8:"ccop.jpg";i:2;s:11:"reyborn.png";i:3;s:13:"swopgroup.jpg";} 

如何更新這些數據,比如我想刪除ccop.jpg

回答

5

您必須從數據庫中提取值,對其進行反序列化,移除元素,將其序列化並再次保存。

$remove = "ccop.jpg"; 

// 
// get the string from the database 
// 

$arr = unserialize($str); 

foreach($arr as $key => $value) 
    if ($value == $remove) unset($arr[$key]); 

$str = serialize($arr); 

// 
// save the string back to the database 
// 

而是節約價值的系列化名單,最好是有一個normalized database,只是做一個簡單的DELETE FROM images WHERE object_id = ...

+0

謝謝你的想法,如果我只能決定我可能會這樣做,但不幸的是,我只是在做php代碼,我不能改變數據庫表的定義,這就是爲什麼我正在尋找替代方法。 – reyBorn 2011-04-10 15:24:15

2

理想情況下,你需要

  • 提取它
  • 反序列化
  • 修改
  • 序列化
  • 寫回數據庫。
0

由於您將它存儲在VARCHAR字段中,並且它是一個PHP序列化數組,因此您希望將其從數據庫中反序列化並重新更新該字段。你不應該看MySQL來修改PHP的具體信息,因爲......這不是它的目的。

+0

謝謝你,你救了我一天:) – reyBorn 2011-04-10 15:25:39

5

不要將序列化數據存儲在數據庫中。

創建一個鏈接表,由main_idpicture組成,並在其中存儲您的圖像名稱。
所以,你將有不同的訪問權限。

+0

爲什麼我不把序列化數據保存到mysql數據庫? – 2016-05-05 07:14:58

+0

它可以節省您很多麻煩 – ViliusL 2017-01-12 11:32:18

+0

除非您的數據庫是一個WordPress數據庫,否則您將永遠處於一個受到傷害的世界。 – Jeremy 2017-11-01 19:28:18