2012-03-03 98 views
0

我是MySQL的初學者,我試圖檢索特定ID的名稱。PHP/MySQL:獲取特定ID的名稱

這裏是我的數據庫看起來像:

我接觸的一個表包含ID,姓和名。

我想檢索相同形式的特定ID的名字和姓氏。

所以我想結束一個選項的形式,選項值將是每個ID的名字。

例如:

<form> 
<select name="users"> 
<option value="">Select a person:</option> 
<option value="5"> <?php echo "$first $last" ?> </option> 
<option value="10"> <?php echo "$first $last" ?> </option> 
<option value="15"> <?php echo "$first $last" ?> </option> 
</select> 
</form> 

的值是ID的。

和我的PHP:

<?php include("connection.php"); 

$query="SELECT * FROM contacts"; 
$result=mysql_query($query); 

$num=mysql_numrows($result); 

mysql_close(); 

$i=0; 
while ($i < $num) { 

$first=mysql_result($result,$i,"first"); 
$last=mysql_result($result,$i,"last"); 

$i++; 
} 

?> 
在我實際的例子

我只在數據庫中獲取最後的人的名字和姓氏。

所以,我怎麼能爲特定的ID,而我在我的形式分配檢索姓和名(?)

回答

2

這是因爲你的while循環每次都會覆蓋$ first和$ last。嘗試

$users = array(); 

while ($row = mysql_fetch_assoc($result)) { 
    $users[] = $row; 
} 

而在HTML(編者):

<form> 
    <select name="users"> 
    <option value="">Select a person:</option> 
    <?php foreach($users as $row): ?> 
     <option value="<?php echo $row['id']; ?>"> <?php echo $row['first'] . " " . $row['last']; ?> </option> 
    <?php endforeach; ?> 
    </select> 
</form> 
+0

這不會編譯:<?php echo「$ row ['first'] $ row ['last']」?>。我試過這個:echo $ row ['first']; echo $ row ['last']和它的作品,但名字和姓氏之間沒有空間 – 2012-03-03 01:17:15

+0

對不起,我沒有檢查語法。我編輯了HTML部分,以便在名字和姓氏之間添加空格。 – adidasadida 2012-03-03 01:24:26

+0

謝謝。這可以用作打印所有ID。如果我想僅打印ID 13和15的名字和姓氏?這是我的問題。 – 2012-03-03 01:26:38

1

假設您的聯繫人表中有一個主鍵字段,你會使用這個領域投入您的<option>標記爲值。然後,您在數據庫中的特定<option>和記錄之間有1:1的對應關係。如果你一個人的名字,你會最終(說)5「約翰史密斯」的條目,這是不可能分辨出你想要的。

所以,讓你的查詢是:

SELECT id, firstname, lastname 
FROM ... 

然後:

while ($row = mysql_fetch_assoc($result)) { 
     echo <<<EOL 
<option value="$row[id]">$row[firstname] $row[lastname]</option> 

EOL; 
    } 
+0

根據你的款,你是對的,這是我的問題。我想讓我的主鍵是選項的值中的ID,然後打印該特定ID的名稱。但你的答案似乎並沒有在PHP中編譯。請注意,我是初學者。 – 2012-03-03 01:21:45

+0

這裏是我的整個源代碼:http://pastebin.com/QYxd2xKQ – 2012-03-03 01:23:02

0
$users = $_POST['users']; 
$query = 
"SELECT 
    ID, FIRSTNAME, LASTNAME 
FROM 
    CONTACTS 
WHERE 
    ID = '$users'"; 

當然,雖然這個工作,它是一個SQL注入漏洞的一個經典例子。您需要對輸入進行清理,或者使用準備好的語句和綁定變量。

0

你可以做

$query="SELECT * FROM contacts WHERE id = '$id'";

一個小Googling將很長的路要走。閱讀thisthis

+1

我知道這一點,但這隻給你一個ID的名字和姓氏。 – 2012-03-03 01:17:43