0

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

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

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

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

非常感谢yuy。

数据库

<?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>

非常感谢你。

编辑:

编号:整数(5)

标题:varchar(30)

描述: varchar(50)

assigner_id: int(5)

受让人ID:int(5)

创建日期:日期

due_date:日期

status_id:整数(5)

category_id:整数(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)";

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

4

1 回答 1

0

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

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

这将使 MySQL 知道您要为这些字段插入哪些字符串。

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

考虑使用mysqliPDO,因为您正在使用已弃用的库。有关一些示例,请参见此处

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

编辑

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

于 2013-04-16T23:36:17.980 回答