在我的脚本SQL中,数据库中的行为空

问题描述 投票:0回答:2

我正在尝试在这些表单脚本中查明问题。

我想在SQL Server中用将要插入HTML表单的数据创建一行,但是每次只创建空行而又不插入表单输入。

HTML

<form action="insert2.php" method="post">

        <label for="First_name">First_name:</label>
        <input type="text" name="First_name" id="First_name">

        <label for="PASSWORD">PASSWORD:</label>
        <input type="text" name=value name="pass" id="pass">

        <label for="Emailaddress">Emailaddress:</label>
        <input type="text" name=value name="email" id="email">

    <input name="submit" type="submit" value="Submit">
</form>

PHP

    <?php
if(isset($_POST['submit'])){
    $First_name   = $_REQUEST['First_name'];
    $pass         = $_REQUEST['password'];
    $email        = $_REQUEST['Emailaddress'];
}


$servername = "host";
$username = "user";
$password = "";
$dbname = "dbname";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $sql = "INSERT INTO users(First_name, PASSWORD, Emailaddress)
        VALUES ('$First_name', '$pass', '$email')";

    $conn->exec($sql);
    echo "New record created successfully";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>
php html sql
2个回答
0
投票

发布的值应设置为$_POST['ExampleField'],而不仅仅是具有该名称的变量。]​​>

例如:$First_name应该为$_POST['First_name']

如果查看错误日志,您可能会因为现在的代码而收到未定义的变量错误,因为从未定义$First_name$PASSWORD$Emailaddress

此外,您应该避免像这样直接将变量放入查询中,这会使您面临巨大的安全风险。我建议阅读SQL注入(https://www.w3schools.com/sql/sql_injection.asp)和绑定参数(https://www.php.net/manual/en/pdostatement.bindparam.php),以了解如何避免这些风险。


0
投票

您需要在某种提交后检索值。您有一个提交按钮,但您要为其命名(我将其命名为“提交”)。该代码应该可以工作,但是您很容易受到注入攻击。

© www.soinside.com 2019 - 2024. All rights reserved.