2012-07-24 77 views
3

好吧,基本上我無法弄清楚如何從mysql中得到內爆結果返回到php中的可用變量。陣列把我扔了一圈,讓我瘋狂。將內爆陣列從mysql拆分爲php中的變量

正在動態地從數據庫中創建的複選框:

<input name="tournament_id[]" value="'.$row['tournament_id'].'" type="checkbox">'.$row['tournament_name'].' 

張貼的價值越來越被引爆(無SQL注入預防實施至今):

$got_tournament_id = implode(",",$_POST['tournament_id']); 

這被插入到這樣的MySQL :

id user_id tournament_id 
1 16942627 1,10 

這是我的mysql查詢獲取內爆d數據:

$query = ("SELECT tournament_id FROM tournament WHERE user_id=16942627"); 
$result = mysql_query($query); 
while ($row = mysql_fetch_array($result)) { 
$got_it = $row['tournament_id'];  
} 
$bust_him = var_dump(explode(",", $got_it)); 
echo $bust_him; 

以上使用的var_dump還是返回了以下內容:

array(2) { [0]=> string(1) "1" [1]=> string(2) "10" } 

現在,這是我完全喪失,不能找出如何做才能獲取值1和10從陣列變成個體變量。我已經嘗試了幾種方法來做到這一點,並且我總是以錯誤結束,或者只是單詞數組。如果有人能提供一些幫助,我需要一些幫助。提前致謝。

回答

7

不要var_dump(),其目的是調試,而不是代碼或顯示邏輯。只要存儲explode()輸出到$bust_him什麼奇怪的變量名):

// Store the output of explode() directly 
$bust_him = explode(",", $got_it); 
// No need for individual variables, just access via array keys. 
echo $bust_him[0]; 
echo $bust_him[1]; 
// etc... 

如果你有固定數量的元素,你可以使用list(),將它放在變量:

// You know you only have two, so you can use list() 
// to store directly into variables 
list($first, $second) = explode(",", $got_it); 
echo $first; 
echo $second; 

從長遠來看,比在表格中存儲逗號分隔值更好的解決方案是創建一個單獨的,正確標準化的表,鏈接tournament_iduser_id。然後,您每user_id有多個行,每個行包含一個tournament_id。這使得在許多情況下可以更簡單和更高效地查詢,例如可以使用集合,還有許多其他好處。

+0

感謝您在那裏的正確方向點。我周圍的答案不完全正確,但再次感謝你。我還想過重做我所擁有的東西,並且實施你提到的關於規範化表的內容,因爲我認爲從長遠來看這會更好。再次感謝您的快速回答。 – BeKustom 2012-07-24 15:28:27