为什么不保存数据库?

时间:2011-08-21 02:45:21

标签: php mysql database

我有一个示例php的输入表单。

<form action="insert.php" method="post">
        <table>
            <tr>
                <td>First Name:</td>
                <td><input type="text" id="fname" name="fname" /></td>
            </tr>
            <tr>
                <td>Last Name:</td>
                <td><input type="text" id="lname" name="lname" /></td>
            </tr>
            <tr>
                <td>Age:</td>
                <td><input type="text" id="age" name="age" /></td>
            </tr>
            <tr>
                <td>&nbsp;</td>
                <td><input type="submit" value="Add Person!" /></td>
            </tr>
        </table>
    </form>

并且insert.php就像这样

<?php
    $host = "localhost";
    $user = "root";
    $pass = "";
    $con = mysql_connect($host, $user, $pass);
    $db = "phptest";    

    if(!$con)
    {
        die("Could not connect: " . mysql_error());
    }
    mysql_select_db($db,$con);
    $sql = "INSERT INTO persons (FirstName,LastName,Age) VALUES ('$_POST[fname]','$_POST[lname]','$_POST[age]')";
    mysql_query($sql,$con);
    mysql_close($con);
?>

它适用于第一次输入。当我输入其他值并按下提交按钮时,数据不会保存到数据库中。在数据库中,它只显示填充了我的第一个输入的1行。 insert.php的代码有什么问题?感谢。

3 个答案:

答案 0 :(得分:2)

也请

echo mysql_error();
在mysql_query()之后

知道是否有问题,尽管您的查询似乎很好。

此外,发布表结构可能会有所帮助。 *可能是您忘记在表中设置了一个id为primary_key和auto_increment *

答案 1 :(得分:0)

我最好的猜测是,您将数据传递到其中包含单引号的查询中,这会过早地导致查询中的某个引用字符串结束。

不知道确切的错误是什么,我不能确定。你应该检查mysql_error()之类的错误。如果您使用它并显示错误消息,我将能够为您提供更多帮助。

直接从用户输入中投掷数据(这是$_POST包含的内容)是一个非常糟糕的主意。你最好使用PDO和准备好的语句。

我不会再对此再写一遍,我只会引导你找到我前几天写的答案。你可以找到它here

答案 2 :(得分:0)

在表Id中创建新字段(例如:persons)并将其设置为auto_increment