PHP / MySQL:获取特定ID的名称

时间:2012-03-03 00:55:00

标签: php mysql

我是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&#39。

和我的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的名字和姓氏(?)

4 个答案:

答案 0 :(得分:2)

这是因为你的while循环每次都会覆盖$ first和$ last。尝试

$users = array();

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

在HTML(EDITED)中:

<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>

答案 1 :(得分:1)

假设您的联系人表格中有主键字段,您可以使用THAT字段作为值放入<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;
    }

答案 2 :(得分:0)

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

当然,虽然这有效,但它是SQL注入漏洞的典型示例。您需要清理输入或使用预准备语句和绑定变量。

答案 3 :(得分:0)

你可以做到

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

一点点谷歌搜索将会有很长的路要走。阅读thisthis