2012-03-03 94 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