我正在尝试创建一个自我提交页面,该页面将为用户填写表单。该信息将存储在MySQL数据库中。表单似乎正在工作,但由于某种原因,我无法将表单中的信息插入到数据库中。这就是我所拥有的:
<!DOCTYPE html>
<html>
<head>
<title>MySQL Test</title>
</head>
<body>
<h1>MySQL Test</h1>
<?php
if($_SERVER["REQUEST_METHOD"] == "GET") {
?>
<form action="" method="post">
<input type="text" name="name" placeholder="Name" /><br />
<input type="submit" value="Send" />
</form>
<?php
} else if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST["name"];
$server = new PDO("mysql:dbname=test;host=localhost", "root", "root");
$server->execute("INSERT INTO test ('name') VALUES $name;");
}
?>
</body>
</html>
我应该改变什么?
答案 0 :(得分:3)
您的插入内容应如下所示:
$name = $_POST["name"];
$server = new PDO("mysql:dbname=test;host=localhost", "root", "root");
$stmt = $server->prepare("INSERT INTO test (name) VALUES (:name)");
$stmt->bindParam(':name', $name);
$stmt->execute();
答案 1 :(得分:0)
请像这样插入:
$name = "john";
$query = "INSERT INTO test(col) VALUES(:name);";
$statement = $server->prepare($query);
$statement->execute(array(":name" => $name));
使用prepared statements调用它,它非常简单,并且可以避免sql注入。通过在每个“:col”=&gt;之后用逗号分隔,您可以在查询的多个cols上执行多个变量$ colVal,但这里不需要,只是一个提示。
您也可以进行更新。
请记住检查插入的值是否为空。