2016-06-08 73 views
1

我有3級職位的變量&我需要保存在單場的3個變量值在MySQL表PHP - 刪除多餘的逗號

below are table field details: 
------------------------------- 
id int(11) 
name varchar(100) 
country varchar(100) 

details varchar(100) (this field used for store all 3 variables value) 

如果變量值被公佈爲ID = 1,名稱史蒂夫&國家=美國則需要存儲爲

結果 - 1,史蒂夫,美國

現在的問題是所有3變量是可選的,所以如果只是通過ID &名需要存儲的

結果 - 1,史蒂夫(無最後一個逗號將存儲)

如果剛剛獲得通過的ID &國家則需要存儲爲

結果 - 1,美國(沒有額外的逗號將存儲)

我已經試過這樣的:

if(isset($data['id']) || isset($data['name']) || isset($data['country'])) 
{ 
    $details=$data['id'].",".$data['name'].",".$data['country']; 
} 

我如何在php-mysql中實現這個功能?在一個陣列

+1

將多個值存儲在單個數據庫字段中很少是一個好主意....爲什麼不使用多個列來表示不同的值?當你多年閱讀'1,usa'時,你怎麼知道它是'id'和'country',而不是'id'和'name'?值的單獨列會告訴你即時 –

回答

7

把當前值和後

$details = []; 

if(isset($data['id']) and !empty($data['id'])) $details[] = $data['id']; 
if(isset($data['name']) and !empty($data['name'])) $details[] = $data['name']; 
if(isset($data['country']) and !empty($data['country'])) $details[] = $data['country']; 
$details = implode(',', $details); 
+0

檢查時,只有id和國家通過然後它存儲1,,美國 – STEVE001

+0

它是不可能的。只有$ data ['name']等於空字符串 – splash58

+0

@ STEVE001看這裏 - https://eval.in/585050 – splash58

0
$text = ''; 
foreach($details as $k=>$v) { if($v) $text .= ($text?',':'') . $v; } 
1

您的代碼

if(isset($data['id']) || isset($data['name']) || isset($data['country'])) 
{ 
$details=$data['id'].",".$data['name'].",".$data['country']; 
} 

您的代碼後,只要加入這個破滅了。 你完成了。

$details = trim($details,',');