Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP将表单中的数据插入mySQL数据库?_Php_Html_Mysql_Sql - Fatal编程技术网

如何使用PHP将表单中的数据插入mySQL数据库?

如何使用PHP将表单中的数据插入mySQL数据库?,php,html,mysql,sql,Php,Html,Mysql,Sql,我需要将学生插入我的数据库 学生表有3个字段id\u学生,Student\u名字和Student\u姓氏 我希望用户将数据插入表单,按下提交按钮,然后将数据添加到数据库中,但我运气不太好 以下是我迄今为止所做的工作: 表格: <form method="POST"> First name: <input type="text" name="firstname"><br> Surname: <input type="text" name="surname"

我需要将学生插入我的数据库

学生表有3个字段
id\u学生
Student\u名字
Student\u姓氏

我希望用户将数据插入表单,按下提交按钮,然后将数据添加到数据库中,但我运气不太好

以下是我迄今为止所做的工作:

表格:

<form method="POST">
First name: <input type="text" name="firstname"><br>
Surname: <input type="text" name="surname">
<input type="submit" name="action"></button>
</form>
我的第一个想法是,我没有要求用户输入学生id号,但这设置为自动递增,这使我认为我可以添加其他2个字段,id将自动填充


此外,我没有收到错误消息,数据只是没有放入表中。

您必须使用
mysql\u query运行查询

$sql = "INSERT INTO Students (Student_firstname, Student_surname)
VALUES('$_POST['firstname']', '$_POST['surname']')";
$result=mysql_query($sql);
另外,使用
mysqli
比使用
mysql
更好,因为它已被弃用。您可能还需要阅读一点有关SQL注入的内容

——您需要执行查询。
--您的查询不正确

试着这样做:

function addStudent()
{
 $data = "INSERT INTO Students (Student_firstname, Student_surname)
 VALUES('".$_POST['firstname']."', '".$_POST['surname']."')";
 $mysqli = new mysqli("host", "my_user", "my_password", "db_name");
 if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
     exit();
 }


 if(!$mysqli->query($data))
 {
   die("Invalid Query: " . $mysqli->error());
  }
}

您应该使用准备好的语句,这样您就可以对抗来自恶意用户的SQL注入,并使用条件语句来评估插入是否成功

function addStudent(){
    $mysqli = new mysqli('host', 'user', 'password', 'database');
    $stmt = $mysqli->prepare('INSERT INTO Students (Student_firstname, Student_surname) VALUES(?, ?)');
    $stmt->bind_param('ss', $_POST['firstname'], $_POST['surname']);
    if($stmt->execute()):
        echo 'We have successfully added this student.';
    else:
        exit('execute() failed: ' . $stmt->error);
    endif;
    $stmt->close();
}
  • 下面的第一件事是不正确的

    $data=“插入学生(学生名、学生姓) 值(“$”POST['firstname']”、“$”POST['names']”)

  • 应该是

    $data=“插入学生(学生名、学生姓) 值(“$”POST['firstname']。”、“$”POST['LastName']。”)”

  • 第二件事

您没有执行需要的查询。请使用mysql\u query()在此处学习

  • 第三,您的代码容易受到sql注入的攻击,所以请使用mysqli_*函数或带有prepare语句的PDO
您尚未执行查询。之后

$data = "INSERT INTO Students (Student_firstname, Student_surname)
VALUES('$_POST['firstname']', '$_POST['surname']')";
您应该通过以下方式执行SQL查询:

 $exec = mysql_query( $data, $con );

其中,
$data
是您的查询&
$con
正在建立mysql连接。

您没有执行查询!请不要使用这样的代码,攻击者可以通过这种方式轻松地注入sql。要么切换到prepared语句,要么至少在输入参数上使用mysql\u real\u escape\u字符串。最好使用PDO/mysqli,因为您的代码包含不推荐使用的函数
 $exec = mysql_query( $data, $con );