【发布时间】:2014-05-26 19:04:43
【问题描述】:
我有一个包含学校名称和位置的数据库表。看起来像这样
id name location
1 Federal University of tech California
2. Massachusetts Inst of tech Boston
我正在使用此表使用这些学校的名称填充选择标签。它工作正常。每个用户在创建他/她的个人资料时都应该选择他/她的学校。但是,当提交表单时,只会插入学校名称中的第一个单词。例如联邦理工大学;只有联邦被插入到数据库中,对于马萨诸塞州理工学院,只有马萨诸塞州被插入 - 等等 - 而不是学校的全名。如何插入所选学校的全名?代码(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>
【问题讨论】:
-
(university, major email)中缺少逗号,除非是复制/粘贴错字。 -
是的,这是一个错字……已编辑……
-
然后检查您的列长度。它们可能太小了。
-
另外,您应该在
while循环周围添加一些支撑{},并将fetch[PDO::FETCH_ASSOC])更改为while ($rows = $stmt->fetch(PDO::FETCH_ASSOC)),这可能是一个因素。根据手册php.net/manual/en/pdostatement.fetch.php -
你能说明你是如何填充 SELECT 的吗?