Php 从HTML表单将数据插入SQL表

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表单,该表单应该(在填充时)将其保存的数据发送到数据库,插入新行,以便以后可以使用。然而,我似乎无法让它工作,我得到以下错误:

注意:在C:\xampp\htdocs\form\insert.php中使用未定义的常量con-假定为con

警告:mysql_query()希望参数1是字符串,对象在C:\xampp\htdocs\form\insert.php中给出
未插入数据


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)){ }