【问题标题】:Insert Data to MySQL db from HTML form using PHP使用 PHP 从 HTML 表单将数据插入 MySQL 数据库
【发布时间】:2018-11-15 14:25:34
【问题描述】:

我正在尝试使用 PHP 从 HTML 表单向 SQL 数据库插入新记录。

我使用 Post 方法制作了一个表单

<form name="CreatNewMCQ" action="create.php" method="POST">

带有提交按钮

<button type="submit" form="CreateNewMCQ">CREATE</button>

我想要做的是当我按下按钮时,它会调用create.php

<?php
$servername = "localhost";
$user = "admin";
$pass = "admin";
$dbname = "examples";

// Create connection
$conn = new mysqli($servername, $user, $pass, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$id = $_POST['id'];
$name = $_POST['name'];
$year = $_POST['year'];

$sql = "INSERT INTO cars (id, name, year)
VALUES ($id, $name, $year)";

if ($conn->query($sql) === TRUE) {
    echo "Tạo mới thành công";
} else {
    echo "Lỗi: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

然后将表单中的数据插入 SQL 数据库(表单中的 ID、姓名、年份)。 我在 SQL 语法中遇到了一些错误。我犯了什么错误?

【问题讨论】:

  • 如果您收到任何错误消息,您可以将错误消息与您的问题分享。
  • 首先发布您遇到的错误,这将有助于我们为您提供帮助。 我假设您的错误出现在您的 $sql 行,您可能想要一些单一的引号...$sql = "INSERT INTO cars (id, name, year) VALUES ($id, '$name', '$year')"; 如果您有空格和其他一些字符,它将破坏您的查询...进一步,您应该真正了解准备好的语句,因为您已经在使用 mysqli,以避免 MySQL 注入。
  • 一些错误:注意:未定义索引:第 14 行 C:\xampp\htdocs\create.php 中的 id 注意:未定义索引:C:\xampp\htdocs\create.php 中的名称在线15 注意:未定义索引:C:\xampp\htdocs\create.php 16 行中的年份
  • @TrầnVũAnhDũng 您是否在表单中包含了这些字段?在我看来,您提交的表单中它们要么是空的,要么不存在。
  • 是的,我有。我用这个:

标签: php html mysql mysqli


【解决方案1】:

确保所有帖子值都正确。您应该在插入数据之前进行条件检查,例如:

$id = isset($_POST['id']) ? $_POST['id'] : '';
$name = isset($_POST['name']) ? $_POST['name'] : '';
$year = isset($_POST['year']) ? $_POST['year'] : '';

if($id && $name && $year){
$sql = "INSERT INTO cars (id, name, year)
VALUES ($id, '$name', '$year')";
}else{
  return "required fields are missing";
}

注意:如果可能,请发布您的 html。

【讨论】:

    【解决方案2】:

    试试这个:

    <?php
    /* Attempt MySQL server connection.*/
    
    $servername = "localhost";
    $user = "admin";
    $pass = "admin";
    $dbname = "examples";
    
    $link = mysqli_connect($servername, $user, $pass, $dbname);
    
    // Check connection
    if($link === false){
        die("ERROR: Could not connect. " . mysqli_connect_error());
    }
    
    // Attempt insert query execution
    $id = $_POST['id'];
    $name = $_POST['name'];
    $year = $_POST['year'];
    
    $sql = "INSERT INTO cars (id, name, year)
    VALUES ($id, '$name', '$year')";
    
    if(mysqli_query($link, $sql)){
        echo "Records inserted successfully.";
    } else{
        echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
    }
    
    // Close connection
    mysqli_close($link);
    ?>
    

    【讨论】:

    • 感谢您的回复,但我仍然遇到与我相同的错误。 "未定义索引:第 18 行 C:\xampp\htdocs\create.php 中的 id"
    • 您可以发布您的表单输入吗?
    • 你的id可能是自增的,所以不需要从表单中获取插入
    • 我的表单:
    【解决方案3】:
    HTML Form :
    <html>
    <form name="test" method="post">
    Enter name:<input type="text" name="name"/> <br>
    Enter year :<input type="text" name="year"/><br>
    <input type="submit" name="save" value="save" />
    </form>
    </html>
    php code  :
    
    <?php
    $conn=mysql_connect("localhost","root","passward");
    $select_db=mysql_select_db("Atul",$conn);
    if($conn)
    {
        echo "connected";
    }
    else
    {
        echo "Please try again";
    }
    
    if(isset($_POST['save']))
    {
        $name=$_POST['name'];
        $year=$_POST['year'];
        $insert_record="insert into test (name,year) values("$name","$year");
        $result=mysql_query($insert_record);
        if($result)
        {
            echo "Record inserted successfully";
        }
        else
        {
        echo "please try again";
        }
    }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 1970-01-01
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      • 2017-08-08
      相关资源
      最近更新 更多