2012-08-30 51 views
1

所以我有形式:PHP:如何從返回數組函數讀取值

<form method="post"> 
    Name: <input type="text" name="name" value<? if(isset($_GET['edit'])) {echo '="'. person($_GET['edit']) .'"';} ?>/><br> 
    Surname: <input type="text" name="surname" value<? if(isset($_GET['edit'])) {echo '="'. person($_GET['edit']) .'"';} ?>/><br>  
    Age: <input type="text" name="age" value<? if(isset($_GET['edit'])) {echo '="'. person($_GET['edit']) .'"';} ?>/><br> 
    <input type="submit" value="Submit" name="submit"/> 
</form> 

function person($id) { 
    $query = 'SELECT name, sname, age FROM persons WHERE ID='.$id.';'; 
    $result = mysql_query($query); 
    return $row = mysql_fetch_row($result); 
} 

所以函數返回一個數組,我怎樣才能從這個功能讓顯示我只有:每個輸入值中的'name'/'sname'/'age'

+0

迭代這個數組的foreach如果打印值別的沒有,你可以在這裏使用in_array匹配檢查重點。你被困在什麼地方? – amitchhajer

回答

0

它就像普通數組一樣,所以可以使用[id]。如果使用mysql_fetch_row,它必須是從0到n-1的數字,其中n是您在查詢中完成的數組中的項目數。如果你有mysql_fetch_assoc,你可以使用$ test ['name'],$ test ['sname'],$ test ['age']。

$test = person(5); 

echo $test[0].$test[1].$test[2]; //will show name|sname|age (withouth '|'). 
0
$per=person('12'); 

獲得名名,SNAME,

$per[0] for name, $per[1] for sname and $per[2] for age; 
4

年齡在使用字母鍵第一次使用mysql_fetch_assoc

然後你就可以在PHP的最新版本,這樣做的:

person($id)['name'] 

或者在舊版本PHP的單獨定義數組

$personData = person($id); 
$name = $personData['name']; 
+1

+1給你,我更喜歡assoc。鍵而不是數字1 – WatsMyName

+1

+1 for assoc!讓我的數組更具可讀性 – asprin

+1

我也是。+ 1爲您的答案。我可以保持沉默,而這種美麗的答案 – Gautam3164

0
$data = person($id); 
$name = $data['name']; 

但是你應該逃脫烏爾參數之前使用他們在你的sql語句! 至少這樣做:用

<?php $_GET['edit'] = mysql_real_escape_string($_GET['edit']); ?> 
<form method="post"> 
Name: <input type="text" name="name" value<? if(isset($_GET['edit'])) {echo '="'.person($_GET['edit']) .'"';} ?>/><br> 
......