【问题标题】:SQL - Insert form into a databaseSQL - 将表单插入数据库
【发布时间】:2017-06-30 14:22:23
【问题描述】:

我有一个 php 脚本,可以将表单输入插入名为 XXXX_cmets 的数据库中,并将其插入名为 Comments 的表中,该表具有 Name 和 Comment 作为列。当用户点击 Save 按钮时,应将表单插入到 DB 中。我使用 connect.php 连接到数据库:

<?php
$servername = "localhost";
$username = "XXXXX";
$password = "XXXXX";
$Dbconnect = "XXX_comments";

// Create connection
$conn = new mysqli($servername, $username, $password);
mysqli_select_db($conn,$Dbconnect);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
echo "Connected successfully";
?>

在我的 index.php 文件中,我有以下形式:

<?php
    include ('connect.php');
?>

<?php               
        if(isset($_POST['Save'])){
        $sql = $conn->prepare("INSERT INTO Comments (Name, Comment) VALUES (?, ?)");
        $stmt->bind_param("ss", $firstname, $comment);
        $firstname = $_POST['firstname'];
        $comment = $POST['comment'];
        $stmt->execute();  
        Echo "Succefully inserted to table";
 }
 ?>
<div class="container">
  <div class="row" id="post-review-box" style="display:none;">
    <div class="col-md-12">
      <form id="form" accept-charset="UTF-8" action="index.php" method="post">
        <input type="text" class="form-control animated" id="firstname" type="hidden" placeholder="Enter your Name">
        <br>
        <input id="ratings-hidden" name="rating" type="hidden">
        <textarea class="form-control animated" cols="50" id="comment" placeholder="Enter your review here..." rows="5"></textarea>
        <br>
        <div class="text-right">
          <div class="stars starrr" data-rating="0"></div>
          <a class="btn btn-danger btn-sm" href="#" id="close-review-box" style="display:none; margin-right: 10px;">
            <span class="glyphicon glyphicon-remove"></span>Cancel</a>
          <button class="btn btn-success btn-lg" type="submit" name="Save">Save</button>
        </div>
      </form>

    </div>
  </div>

</div>
<div class="display"></div>
</div>
</div>
</div>

连接成功,但没有插入数据。

【问题讨论】:

  • 您尝试将 3 个值插入 2 列,只有 2 个参数。
  • 对不起,这是一个错字我更新了答案,它仍然没有插入数据。
  • 也改变这一行 $stmt->bind_param("sss", $firstname, $comment);
  • 尝试检查errors,而不是盲目地假设它有效。

标签: php html mysql


【解决方案1】:

您需要先分配值,然后才能使用它们,如下代码:

$firstname = $_POST['firstname'];
$comment = $_POST['comment'];
$sql = $conn->prepare("INSERT INTO Comments (Name, Comment) VALUES (?, ?)");
$stmt->bind_param("sss", $firstname, $comment);

【讨论】:

  • 同样没有插入数据
【解决方案2】:

您应该为表单中的输入和文本区域命名为

<input type="text" name="firstname" class="form-control animated" id="firstname" type="hidden" placeholder="Enter your Name">
<input id="ratings-hidden" name="rating" type="hidden">
<textarea class="form-control animated" cols="50" name="comment" id="comment" placeholder="Enter your review here..." rows="5"></textarea

并且您在将其绑定到查询之后分配值,您应该在将其绑定到查询之前为 $firstname$comment 分配值

if(isset($_POST['Save'])){
    $firstname = $_POST['firstname'];
    $comment = $_POST['comment'];
    $sql = $conn->prepare("INSERT INTO Comments (Name, Comment) VALUES (?, ?)");
    $stmt->bind_param("ss", $firstname, $comment);    
    $stmt->execute();  
    echo "Succefully inserted to table";
}

编辑:代码使用 $POST 而不是 $_POST。

【讨论】:

  • 同样没有插入数据
  • @WojtekT 我已经编辑了我的答案,您忘记为表单元素(输入和文本区域)指定名称
  • 改变一切还是一样。我会尝试一些错误检查
  • 你可以在这里查看网站tadzik9634.000webhostapp.com/index.php
【解决方案3】:

几点说明

首先,在 connect.php 文件中混合 OOP 和 Procedural 样式,使用以下代码可以获得相同的结果:

 $conn = new mysqli($servername, $username, $password, $Dbconnect);

接下来,在您的 index.php 中,您创建了一个准备好的语句,但是您将它分配给了 $sql 变量,后来您尝试使用未定义的 $stmt 变量,所以为了解决这个问题,只需更改第一个2行

 $stmt = $conn->prepare("INSERT INTO Comments (Name, Comment) VALUES (?, ?)"); 
 $stmt->bind_param("ss", $firstname, $comment);

希望它能解决你的小问题!

【讨论】:

  • 没有错误就是问题所在;/你可以查看网站 tadzik9634.000webhostapp.com/index.php
  • 看不到你的数据库结构,帮不上什么忙,能不能给你的数据库结构截图?
  • 我不能上传任何图片所有网站都被屏蔽了我会在几个小时内上传一张
  • 我运行了这个 SQL 命令来创建它 CREATE TABLE Comments ( Name varchar(255), Comment text(800) );
  • 如果我们能以某种方式看到您的数据库结构会更好,因为问题可能是小而愚蠢的,但只要我们看不到它,就很难检查.
【解决方案4】:

对于任何感兴趣的人,我已经解决了这个问题,提交按钮似乎没有响应所以我添加了一个 javascript onclick 函数来强制提交表单。

<input class="btn btn-default" onclick="myFunction()" value="Submit">
<script>
function myFunction() {
    document.getElementById("form").submit();
}
</script>   

感谢大家的回答。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 2012-10-21
    相关资源
    最近更新 更多