0

我现在遇到 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');

有没有其他方法可以做到这一点,或者我只是做错了什么?

4

3 回答 3

1

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

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

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

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

在 SQL 查询中,您可以指定查询中将提供哪些字段的值,而表中的其余字段将包含默认值(如果是AUTO_INCREMENT,将使用下一个整数值)。

于 2012-05-01T07:41:45.960 回答
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
于 2013-12-30T06:46:37.507 回答
0

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

于 2012-05-01T07:15:48.510 回答