如何使用PHP将表单中的数据插入mySQL数据库?
我需要将学生插入我的数据库 学生表有3个字段如何使用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"
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']。”)”
- 第二件事
- 第三,您的代码容易受到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 );