首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用下拉菜单插入数据库

使用下拉菜单插入数据库
EN

Stack Overflow用户
提问于 2019-02-19 04:28:04
回答 2查看 0关注 0票数 0

问题是在下拉列表中执行INSERT。我能够将DB中的数据填充到下拉列表中。问题是从下拉列表中插入表格。

HTML (从数据库生成的下拉列表)

代码语言:javascript
复制
<div class="group">
    <label>Subject</label>
    <input type="text" name="subject">
</div> 
<div class="group">
    <label>Group</label>                    
    <select id="ministry" name="group">                        
        <option style="font-family: century gothic">---Select Ministry---</option>
        <?php // populate dropdown ?>
        <?php foreach($groups as $group): ?>
            <option value="<?= $group['group_id'] ?>"><?= $group['groupname'] ?></option>
        <?php endforeach; ?>
    </select>
</div>

PHP (插入数据库的代码)

代码语言:javascript
复制
<?php

$date = "";
$subject = "";
$group = "";
$message = "";  

$sql= "SELECT * FROM groups";
$stmt = $db->prepare($sql);
$stmt->execute();
$groups = $stmt->fetchAll();

if (isset($_POST['sendSMS'])) {
    $date = (isset($_POST['date']));
    $subject = $_POST['subject'];
    $group = $_POST['group'];
    $message = $_POST['message'];

    $sql = "INSERT INTO message (date, subject, group, message) 
            VALUES 
           (:date, :subject, :group, :message)";

    $stmt->execute(array(
        ':date' => $_POST['date'],
        ':subject' => $_POST['subject'],
        ':group' => $_POST['group'],
        ':message' => $_POST['message']));

    $result = $sql->execute();
    echo "SMS sent successfully";
}

?>
EN

Stack Overflow用户

发布于 2019-02-19 13:06:20

我将您的第一个查询移到了页面顶部。在我看来,这将是用组数据填充你的html。

我稍微清理了你的HTML。格式良好的代码更容易阅读,并且在遇到问题时更容易排除故障。我喜欢避免进出php。

您的插入查询很接近,但我做了一个非常明确的示例供您遵循。这应该向您展示未来的发展方向。记住:准备,绑定和执行。

代码语言:javascript
复制
<?php

//DB select statement  - This should probably go before your select html
$sql= "SELECT * FROM groups";
$stmt = $db->prepare($sql); //Prepare
//Nothing to bind
$stmt->execute(); //Execute
$groups = $stmt->fetchAll();

echo
'<div class="group">
  <label>Subject</label>
  <input type="text" name="subject">
</div> 

<div class="group">

  <label>Group</label>                    

    <select id="ministry" name="group">                        
      <option style="font-family: century gothic">---Select Ministry---</option>';

      foreach($groups as $group){
        echo
        '<option value="' . $group['group_id'] . '">' . $group['groupname'] . '</option>';
      }

   echo 
   '</select>

</div>';

if(isset($_POST['sendSMS'])){

  //insert into database 
  $query = "INSERT INTO `message` 
  (
     `date`,
     `subject`,
     `group`,
     `message`
   )

VALUES

  (
    :date,
    :subject,
    :group,
    :message

  )";

  //Remember these three steps.  1.)Prepare, 2.)Bind, 3.)Execute

  $stmt = $db->prepare($query); //Prepare

  //Bind
  $stmt->bindParam(":date",    $_POST['date']);
  $stmt->bindParam(":subject", $_POST['subject']);
  $stmt->bindParam(":group",   $_POST['group']);
  $stmt->bindParam(":message", $_POST['message']);

  //Execute 
  $stmt->execute();


  echo "SMS sent successfully";

}

?>

以下是您在PDO上阅读的两个来源。我强烈建议查看它们并将它们加入书签,以便您可以在需要时进行引用。

https://phpdelusions.net/pdo

https://websitebeaver.com/php-pdo-prepared-statements-to-prevent-sql-injection

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档