我正在尝试在这些表单脚本中查明问题。
我想在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;
?>
发布的值应设置为$_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),以了解如何避免这些风险。
您需要在某种提交后检索值。您有一个提交按钮,但您要为其命名(我将其命名为“提交”)。该代码应该可以工作,但是您很容易受到注入攻击。