MySQL表没有通过表单输入填充

时间:2015-12-05 18:59:37

标签: php html mysql

我对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);
 ?>

1 个答案:

答案 0 :(得分:1)

你完全错过了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);