我有一个包含学校名称和位置的数据库表。看起来像这样
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>
答案 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>';