Php 从HTML表单将数据插入SQL表
已经创建了一个HTML表单,该表单应该(在填充时)将其保存的数据发送到数据库,插入新行,以便以后可以使用。然而,我似乎无法让它工作,我得到以下错误: 注意:在C:\xampp\htdocs\form\insert.php中使用未定义的常量con-假定为con 警告:mysql_query()希望参数1是字符串,对象在C:\xampp\htdocs\form\insert.php中给出Php 从HTML表单将数据插入SQL表,php,html,mysql,sql,forms,Php,Html,Mysql,Sql,Forms,已经创建了一个HTML表单,该表单应该(在填充时)将其保存的数据发送到数据库,插入新行,以便以后可以使用。然而,我似乎无法让它工作,我得到以下错误: 注意:在C:\xampp\htdocs\form\insert.php中使用未定义的常量con-假定为con 警告:mysql_query()希望参数1是字符串,对象在C:\xampp\htdocs\form\insert.php中给出 未插入数据 HTML代码 链接到数据库的表单 姓名: 电邮: PHP代码 试试这个: <?ph
未插入数据
HTML代码
链接到数据库的表单
姓名:
电邮:
PHP代码
试试这个:
<?php
// Create connection
$conn = new mysqli("localhost", "username", "password", "databasename");
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('test fname', 'test lname', 'test@example.com')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
您没有使用正确的mySQL查询函数,您使用了:
mysql\u查询($con)
你应使用:
mysqli_查询
相反。如果您仍然有问题,请告诉我。您应该更改:
if(!con){
echo 'Not connected to server!';
}
致:
因为你错过了一个美元符号
此外,您在这里使用的是mysqli\ucode>对象$con
上的mysql\ucode>函数:
if(!mysql_query($con,$sql))
将此更改为
if(!mysqli_query($con,$sql))
SQL注入
由于您的查询容易受到SQL注入的攻击,因此我建议您考虑使用准备好的语句,或者使用mysqli\u real\u escape\u string()
--不过,这其中有一些问题需要解决:尽管您现在有很多答案,但我认为没有一个是正确的答案。我已经像您一样编写了新的、过程性的代码,但是使用了准备好的语句,所以您将被保存到SQL注入中
<?php
$con = mysqli_connect('localhost','[retracted]','[retracted]');
if(!$con){
echo 'Not connected to server!';
}
if(!mysqli_select_db($con,'tutorial')){
echo 'Database not selected!';
}
$Name = $_POST['username'];
$Email = $_POST['email'];
if ($stmt = mysqli_prepare($con, "INSERT INTO person (Name, Email) VALUES (?, ?"))) {
mysqli_stmt_bind_param($stmt, "ss", $Name, $Email);
mysqli_stmt_execute($stmt);
echo "Data inserted";
}
else {
echo "Error";
}
mysqli_close($con);
//header("refresh:2; url=form.html");
?>
您犯了两个小错误,即
1) 在变量名ie更改之前忘记添加$
if(!$con){
echo 'Not connected to server!';
}
2) 您使用的是mysqli\u connect
,但您试图在其中使用mysql\u query
函数。因此,请更改并使用mysqli\u查询
if(!mysqli_query($con,$sql)){ }
这是你的问题。我的建议是使用mysqli
或PDO
,这是一种很好的做法。您将同时使用mysql和mysqli。将所有mysql更改为MySQLipopuble的if(!con)副本{下一件事是完全不安全的sql语句。您的sql查询可能会受到sql注入的攻击。@RafaelShkembi感谢您的及时响应。我刚刚做了这件事,但第4行仍然出现了第一个错误。有什么建议吗?W3的复制粘贴不错。至少您编辑了de标准名称。但这对OP没有帮助,因为他正在尝试从HTML表单插入数据。如果您复制粘贴,那么请复制粘贴一个带有准备语句的示例,作为一个好的示例。这只是插入查询示例。我想在w3中找不到他。
<?php
$con = mysqli_connect('localhost','[retracted]','[retracted]');
if(!$con){
echo 'Not connected to server!';
}
if(!mysqli_select_db($con,'tutorial')){
echo 'Database not selected!';
}
$Name = $_POST['username'];
$Email = $_POST['email'];
if ($stmt = mysqli_prepare($con, "INSERT INTO person (Name, Email) VALUES (?, ?"))) {
mysqli_stmt_bind_param($stmt, "ss", $Name, $Email);
mysqli_stmt_execute($stmt);
echo "Data inserted";
}
else {
echo "Error";
}
mysqli_close($con);
//header("refresh:2; url=form.html");
?>
if(!$con){
echo 'Not connected to server!';
}
if(!mysqli_query($con,$sql)){ }