无法插入数据库

时间:2013-04-16 23:31:37

标签: php mysql insert

我有一个数据库,我无法在其中插入值。这是我的数据库和我的代码。

你能告诉我我的问题是什么吗?

输出告诉我我的sql语法错误。但是,我可以毫无问题地从phpmadmin添加值。

当我使用代码时,我失败了。而且,我找不到任何问题。

非常感谢yuy。

DATABASE

<?php

$db_username = "root";
$db_password = "pass";
$db = "rmado";
$db_server = "localhost";

$db_handle = mysql_connect($db_server, $db_username, $db_password);
$db_found = mysql_select_db($db, $db_handle);
if ($_SERVER['REQUEST_METHOD'] == 'POST') 
{
    $title = $_POST['username'];
    $desc  = $_POST['password'];
    $aaa   = $_POST['type'];
    $bbb   = $_POST['email'];

    $query = "insert into users(username, password, type, email) values ($title, $desc, $aaa, $bbb)";

    mysql_query($query);
}

?>
<html>
    <body>
    <div id="login_form">

        <form name="login_form" method="post" action="zort.php">

            username: <input name="username" type="text" value="">
            password: <input name="password" type="text" value="">
            type: <input name="type" type="text" value="">
            email: <input name="email" type="text" value="">


            <input name="addtask" type="submit" value="add task">

        </form>

    </div>
    <!-- end login_form-->
    </body>
</html>

非常感谢你。

编辑:

id:int(5)

title:varchar(30)

desc:varchar(50)

assigner_id:int(5)

assignee_id:int(5)

creation_date:date

due_date:date

status_id:int(5)

category_id:int(5)

这是我的PHP代码:

$query = "insert into tasks (title, desc, assigner_id, assignee_id, creation_date, due_date, status_id, category_id) values ('$title', '$desc', $ass1, $ass2, '$cre', '$due', $stat, $cat)";

这段代码哪里错了?非常感谢你。

1 个答案:

答案 0 :(得分:0)

根据您的原始问题:所有这些字段都是表格中的文字。对于这些文本字段,您不会在原始查询中使用带引号来封装值。也就是说,以下内容适用于您的示例:

$query = "insert into users (username, password, type, email) values " .
         "('$title', '$desc', '$aaa', '$bbb')";

这将让MySQL知道您希望为这些字段插入哪些字符串。

然而,您在此页面上的内容存在一些问题。恶意用户可以将一些MySQL可接受的字符串放入这些字段中,这可能会对您的数据库造成损害。您需要转义输入字符串以防止恶意内容损坏您的数据库。

当您使用已弃用的库时,请考虑使用mysqliPDO。有关示例,请参阅here

此外,您的字段不应该是文本字段。他们真的应该是varchars,你应该限制他们的长度。

修改

您的第二个查询需要使用反引号封装desc,因为DESC是用于降序的保留MySQL字。