将数据插入mySQL数据库时出现问题

时间:2011-08-25 11:14:29

标签: php mysql

我正在尝试将数据添加到我的数据库中,每次单击“提交”按钮后,数据都不会插入到数据库中。这是我的代码。

<?php include("/common/sql.php") ?>

<?php
if (isset($_POST['submit']))
    {
    mysqlquery("INSERT INTO categories (id, name) VALUES('NULL', '$_POST[name]')"); 
    }
?>

<html>
<head>
<title>Add a category</title>
</head>
<body>
    <h1>Add a category</h1>

    <form action='add_category.php' method='POST'>
        <div>
            <label>Name: <input type='text' name='name' value=''></label>
        </div>
        <div>
            <input type='submit' value='Add Category'>
        </div>
    </form>
</body>
</html>

5 个答案:

答案 0 :(得分:3)

1。查询

看一下我的查询以及您的查询之间的区别:

mysqlquery("INSERT INTO categories (name) VALUES('$_POST[name]')"); 

您可以看到我们已根据您自动生成此内容的情况删除了id

2。功能名称

我希望(祈祷)你没有把mysql_query包装成一个看起来像这样的函数:

function mysqlquery($sql){
  return mysql_query($sql);
}

如果不是这种情况,请使用mysql_query()

3。表单提交名称

正如strauberry指出的那样,您还需要在提交按钮中添加name属性:

<input name='submit' type='submit' value='Add Category'>

4。附注

作为旁注,你应该挑衅地在某处清理$ _POST ['name'] - 至少mysql_real_escape_string。此外,在开发时,设置错误报告非常非常有用

error_reporting(E_ALL);
ini_set('display_errors', '1');

并使用mysql_error()

答案 1 :(得分:1)

将其更改为

$name = mysql_real_escape_string($POST['name']); 

mysql_query("INSERT INTO categories (id, name) VALUES(NULL, '$name')");

还提供名称以提交按钮

<input type='submit' value='Add Category'  name='submit'>

编辑:

你也应该在表结构中将id作为auto生成,并将查询提供为:

 mysql_query("INSERT INTO categories (name) VALUES('$name')");

答案 2 :(得分:1)

如果条件不进去。

更改

<input type='submit' value='Add Category'>

<input name='submit' type='submit' value='Add Category'>

然后你必须将mysqlquery更改为mysql_query并将'null'更改为NULL(不带引号)

答案 3 :(得分:0)

您的布尔表达式if (isset($_POST['submit']))被评估为false,因为没有这样的值。因此永远不会执行mysql_query()命令!你必须给你的按钮一个名字

<input type='submit' value='Add Category' name='submit' />

要查看转移的数据,请使用print_r($_POST);

答案 4 :(得分:-1)

假设您已成功连接到数据库,我建议您首先更正语法:

mysql_query("INSERT INTO categories (name) VALUES('$_POST[name]')");

我已经做了一个假设,'id'被设置为int并在数据库中自动递增,所以你不需要对它进行NULL,顺便说一句,它将作为字符串发送它在引号内。

可能有帮助的是一些错误输出在您的查询后添加此内容并且不要忘记关闭与服务器的连接。

您的代码应如下所示:

$name = mysql_real_escape_string($_POST[name]);    
$mysql_query("INSERT INTO categories (name) VALUES('$name')");

    if (!mysql_query($mysql_query,$con))
      {
      die('Error: ' . mysql_error());
      }
    echo "1 new record added";

    mysql_close($con)

我希望这会有所帮助。