我现在遇到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');
还有其他办法吗?或者我只是做错了什么?
答案 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