从HTML表单插入SQL数据库用户输入

时间:2017-09-26 16:15:23

标签: php mysql

我试图在我的sql数据库中插入“UserId”列,使用php,用户在HTML表单中输入的文本。 下面是一个帮助我弄清楚我做错了什么的基本例子。

HTML

<html>
<form action="index1.php" method ="post" name="trial">

    <input type="text" name="testName" id="testId">
    <br>
    <input type="submit" value="Submit">

</form>
</html>

PHP

$servername = "localhost";
$username = "root";
$password = "xx";
$dbname = "wp";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$UserId = $_POST['testName'];

$sql = "INSERT INTO UserProfile (UserId) VALUES ('$testName')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();

一些注意事项:

  1. 我可以连接到数据库并插入正确的列复选框和表格中的无线电值

  2. 我找不到在数据库中插入从表单输入的用户文本的方法(UserProfile是表,UserId是列)。 使用javascript变量,如下面的那个,有帮助吗?

    var testVar = document.getElementById("testId").value;
    
  3. 我知道我打算使用上面的代码进行黑客攻击,我想稍后改进它,但我认为我需要首先找出基础知识(即:如何添加用户文本输入数据库)

  4. 比你提前得到任何帮助!

2 个答案:

答案 0 :(得分:3)

您将值存储在$ UserId中,而不是存储在$ testName:

将SQL查询更改为

$sql = "INSERT INTO UserProfile (UserId) VALUES ('$UserId')";

我认为这会有所帮助。 BTW:想想SQL注入!看这里:How can I prevent SQL injection in PHP?

答案 1 :(得分:0)

看这里

$sql = "INSERT INTO UserProfile (UserId) VALUES ('$testName')";

在sql语句中将$ testName更改为$ UserId,因为它是php中新变量的名称:

$UserId = $_POST['testName'];
$sql = "INSERT INTO UserProfile (UserId) VALUES ('$UserId')";

但我建议你:

1-使用PDO进行php中的任何sql处理

2-使用mysqli_real_escape_string保护您的代码免受威胁。

使它像:

$UserId = mysqli_real_escape_string($con, $_POST['testName']);