MySQL表未通过表单输入填充


MySQL table not populating by form input

我对MySQL及其编程非常陌生,很抱歉提出这么简单的问题。我无法理解为什么我的MySQL数据库没有填充。

我创建了这个html表单:

<form action="demo.php" method="post"/>
<p>Input 1: <input type="text" name="input1"/></p>
<input type="submit" value="Submit""/>
</form>

并尝试使用以下代码将其与MySQL数据库链接:

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD);
$db_selectd = mysqli_select_db($link, DB_NAME);
$value=$_POST['input1'];
 $sql = "INSERT INTO demo(input1) VALUES ('$value')";
 ?>

请帮忙。

这是现在的新代码:

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD);
$db_selectd = mysqli_select_db($link, DB_NAME);
$sql = "INSERT INTO demo(input1) VALUES (?)";
$stmt = mysqli_prepare($link, $sql);
mysqli_stmt_bind_param($stmt, "s", $value);
mysqli_stmt_execute($stmt);
 ?>

您完全错过了mysqli_query部分。仅仅分配给$sql将如何执行?

$sql = "INSERT INTO demo(input1) VALUES ('$value')";
mysqli_query($link, $sql);

此外,您的程序容易受到SQL注入的攻击。确保你给出:

$value = mysqli_real_escape_string($link, $value);

或者,最棒的是,最好使用准备好的语句,正如Mark Baker所说:

$sql = "INSERT INTO demo(input1) VALUES (?)";
$stmt = mysqli_prepare($link, $sql);
mysqli_stmt_bind_param($stmt, "s", $value);
mysqli_stmt_execute($stmt);