0

我正在尝试创建一个自提交页面,该页面将创建一个供用户填写的表单。信息将存储在 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>

我应该改变什么?

4

2 回答 2

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();
于 2013-08-19T17:37:58.780 回答
0

请像这样插入:

$name = "john";
$query = "INSERT INTO test(col) VALUES(:name);";
$statement = $server->prepare($query);
$statement->execute(array(":name" => $name));

这称为使用准备好的语句,它非常容易并且可以避免 sql-injection。您可以在查询的多个列上执行多个变量,方法是在每个 ":col" => $colVal 之后用逗号分隔,但这不是这里需要的,只是一个提示。

您也可以这样做以进行更新。

请记住检查您插入的值是否为空。

于 2013-08-19T17:40:23.037 回答