将select标签中的选定值插入数据库

时间:2014-05-26 19:04:44

标签: php html sql pdo

我有一个包含学校名称和位置的数据库表。看起来像这样

id      name                           location
1   Federal University of tech        California
2.  Massachusetts Inst of tech            Boston

我使用此表填充包含这些学校名称的select标签。它工作正常。每个用户都应该在创建他/她的个人资料时选择他/她的学校。但是,提交表单时,只会插入学校名称中的第一个单词。例如联邦科技大学;只有联邦被插入到数据库中,对于麻省理工学院,只插入马萨诸塞州 - 依此类推 - 而不是学校的全名。如何插入所选学校的全名?代码(page.php):

<?php
//Getting names of schools to populate select tag

$stmt = $db->query("SELECT name from schools order by name ASC");

if($_SERVER['REQUEST_METHOD'] == "POST"){
$major = $_POST['major'];
$university = $_POST['university'];
$email = $_POST['email'];

$stmts = $db->prepare("INSERT INTO profile (university, major email)") VALUES (:university, :major, :email);
$stmts->execute(array(':university' => $university, ':major' => $major, ':email' => $email));
}

?>

//THE HTML FORM
<form action = "page.php" method = "post">

<label>University:

<?php
echo '<select title = "Select one" name= "university"></select>';
echo '<option value="">--please select--</option>';

while ($rows = $stmt->fetch[PDO::FETCH_ASSOC])
echo '<option value = '.$rows['name'].'>'.$rows['name'].'</option>';

echo '</select>';

?>
//other form elements
</label>
</form>

1 个答案:

答案 0 :(得分:2)

我认为问题在于您为选项标记编写 value 属性的方式。 建议是将带空格的值放在双引号中。

像:

echo '<option value = "Massachusetts Inst of tech">Massachusetts Inst of tech</option>';


但是得到的结果是因为双引号被忽略了:

echo '<option value = "Massachusetts">Massachusetts Inst of tech</option>';

您可能需要查看此行:

echo '<option value = '.$rows['name'].'>'.$rows['name'].'</option>';

并纠正这个:

echo '<option value = "'.$rows['name'].'">'.$rows['name'].'</option>';