简体   繁体   English

无法通过PHP将新记录插入到mysql数据库中

[英]Can't insert new records through PHP into mysql database

When I press the submit button I get error. 当我按下提交按钮时,我收到错误。

object not found error. 找不到对象错误。

And the page automatically adds empty entries with auto incremented primary key (without pressing the submit button). 页面会自动添加带有自动递增主键的空条目(无需按提交按钮)。

I am still a beginner in PHP, I searched thoroughly but I can't find out what's wrong in code. 我仍然是PHP的初学者,我彻底搜索,但我无法找到代码中的错误。

  <html>   
<head>
    <title>Add New Record in MySQL Database</title>
</head>   
<body>
    <form action="insert.php" method="post">
        <p>

            <label for="Name">Full Name:</label>

            <input type="text" name="Name" id="Name">

        </p>
        <p>
            <label for="Code">Code:</label>
            <input type="text" name="Code" id="Code">
        </p>
        <p>
            <label for="GPA">GPA:</label>
            <input type="text" name="GPA" id="GPA">
        </p>
        <input type="submit" value="Submit">
    </form>

    <?php
 /* Attempt MySQL server connection. Assuming you are running MySQL

 server with default setting (user 'root' with no password) */

 $link = mysqli_connect("localhost", "username", "password", "students");
// Check connection

if ($link === false) {

die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Escape user inputs for security
$full_name = filter_input(INPUT_POST, 'full_name');
$code = filter_input(INPUT_POST, 'code');
$gpa = filter_input(INPUT_POST, 'gpa');
// attempt insert query execution
$sql = "INSERT INTO info VALUES ('$full_name', '$code', '$gpa')";
if (mysqli_query($link, $sql)) {
 echo "Records added successfully. $full_name";
} else {
 echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
// close connection
mysqli_close($link);
?>
</body>
</html>  

Try this: 试试这个:

$full_name = filter_input(INPUT_POST, 'Name');
$code = filter_input(INPUT_POST, 'Code');
$gpa = filter_input(INPUT_POST, 'GPA');

The reason why I wrote that is because your input names contain Name , Code and GPA so you need to write this exactly as your input names ( case-sensitive ). 我写这个的原因是因为你的输入名称包含NameCodeGPA所以你需要把它写成输入名称( 区分大小写 )。

Do with isset() . isset() when the submit button clicks only the code runs. 当提交按钮单击时,只运行代码。

Inside the php you should use the form input name field. 在php中你应该使用表单输入名称字段。

<?php
if(isset($_POST['submit'])){
    $link = mysqli_connect("localhost", "username", "password", "students");
    if ($link === false) {
        die("ERROR: Could not connect. " . mysqli_connect_error());
    }
    // Escape user inputs for security
    $full_name = filter_input(INPUT_POST, 'full_name');
    $code = filter_input(INPUT_POST, 'code');
    $gpa = filter_input(INPUT_POST, 'gpa');

    //to prevent sql injection attack
    $full_name = mysqli_real_escape_string($link, $full_name);
    $code = mysqli_real_escape_string($link, $code);
    $gpa  = mysqli_real_escape_string($link, $gpa);

    // attempt insert query execution
    $sql = "INSERT INTO info (Name,Code,GPA) VALUES ('$full_name', '$code', '$gpa')";
    if (mysqli_query($link, $sql)) {
        echo "Records added successfully. $full_name";
    } else {
        echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
    }
    // close connection
     mysqli_close($link);
}
?>
<html>   
<head>
  <title>Add New Record in MySQL Database</title>
</head>   
<body>
    <form action="insert.php" method="post">
    <p>
        <label for="Name">Full Name:</label>
        <input type="text" name="full_name" id="Name">
    </p>
    <p>
        <label for="Code">Code:</label>
        <input type="text" name="code" id="Code">
    </p>
    <p>
        <label for="GPA">GPA:</label>
        <input type="text" name="gpa" id="GPA">
    </p>
    <input type="submit" name="submit" value="submit">
</form>
</body>
</html>  

The problem is the input name. 问题是输入名称。 You named Full Name input with name="Name" , but you declare $full_name = filter_input(INPUT_POST, 'full_name'); 您使用name="Name"命名了Full Name输入,但是声明$full_name = filter_input(INPUT_POST, 'full_name'); in php section. 在PHP部分。 you must change full_name to Name . 您必须将full_name更改为Name As well as the Code and GPA input. 以及代码和GPA输入。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM