【问题标题】:Insert selected value from select tag into database将选择标签中的选定值插入数据库
【发布时间】: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-&gt;fetch(PDO::FETCH_ASSOC)),这可能是一个因素。根据手册php.net/manual/en/pdostatement.fetch.php
  • 你能说明你是如何填充 SELECT 的吗?

标签: php html sql pdo


【解决方案1】:

我认为问题在于您为 option 标签编写 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>';

【讨论】:

  • 很好,但是当您尝试插入时会遇到另一个障碍。 @ss_millionaire
  • @Fred-ii-oh 好吧..什么样的障碍..?
  • @ss_millionaire AKumar 会知道的。我得去准备晚饭了。
  • @AKumar 你知道 d snag Fred -ii- 在说什么吗?
  • @ss_millionaire 你的意思是告诉我这真的有效吗? $stmts = $db-&gt;prepare("INSERT INTO profile (university, major email)") VALUES (:university, :major, :email); 只会产生解析错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-04
  • 2013-12-25
  • 2018-05-06
  • 2015-07-27
相关资源
最近更新 更多