我无法在sql中使用默认值

时间:2012-05-01 06:03:24

标签: php sql default

我现在遇到sql的问题;我给了一个默认值,所以如果该字段在用户提交时保留为空,但它不起作用。当用户提交一个空字段以留下评论而不是默认为anon时它什么都不做。此外,在日期库中,该字段为空。

name VARCHAR (50) default 'anon',


$name=   $_POST['name'];
$title=  sha1($_POST['title']);
$texts= $_POST['texts'];
$forum_id = $_POST['forum_id'];

$name = str_replace("'","''",$name);
$title = str_replace("'","''",$title);
$title = str_replace("b074acd521","STREAMER",$title);
$texts = str_replace("'","''",$texts);

$title = substr($title,0,8);

$sql = "INSERT INTO post (name,title, texts, forum_id) VALUES ('$name', '$title', '$texts', '$forum_id')";
mysqli_query($conn1, $sql) or die('Error inserting to database.');
mysqli_close($conn1);

header('Location: requests.php');

还有其他办法吗?或者我只是做错了什么?

3 个答案:

答案 0 :(得分:1)

您使用的SQL查询不会从数据库中插入默认值,因为您正在为name指定值(即使该值为空字符串,或者为null):

$sql = "INSERT INTO post (name,title, texts, forum_id) VALUES ('$name', '$title', '$texts', '$forum_id')";

相反,如果您希望将默认值插入name字段,则不得在insert语句中指定name列:

$sql = "INSERT INTO post (title, texts, forum_id) VALUES ('$title', '$texts', '$forum_id')";

在SQL查询中,您可以指定在哪些字段中,将在查询中提供值,并且表中的其余字段将包含默认值(在AUTO_INCREMENT的情况下,将使用下一个整数值)。 / p>

答案 1 :(得分:0)

在哪里给出了直接在SQL中应用的默认值? DB中剩下的值最终是通过SQL方式传递给DB服务器的,或者只是你定义了一个变量,如果它不接受用户的值然后使用默认值,请尝试调试它以确保价值得到了正确处理。

答案 2 :(得分:0)

插入值时,不应该为您设置默认值的列 下面的例子说明了......试试这样......

create table er(id int,name char(10),gender char(2)default 'M')

这里我将性别视为默认值 现在我插入值

 insert into er (id,name)values(1,'poda')

 select * from er