2012-05-01 5 views
0

지금 당장 sql에 문제가 있습니다. 사용자가 제출할 때 필드를 비워두면 작동하지만 작동하지 않는 경우 기본값을 부여했습니다. 사용자가 비어있는 필드를 제출하여 주석을 남기지 않고 기본값으로 설정하면 아무것도 수행하지 않습니다. 또한 datebase에서 필드는 비어 있습니다.SQL에서 작동하도록 기본값을 가져올 수 없습니다.

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

무엇 * 정확히 * 당신은 "그것은 아무것도하지 않는다"에 의해 의미합니까? 오류가 있습니까? 빈 값이 삽입 되나요? 아니면 아무 것도 삽입되지 않지만 오류가 있습니까? SQL DDL과 귀하의 코드를 모두 보여주십시오. –

+2

을 만드는 데 사용되는 SQL을 포함한다면 도움이 될 –

+0

당신이 사용하고있는 SQL (mysql, sql server 등)을 아는 것도 도움이 될 것입니다. – Anthony

답변

0

여기서 SQL에 직접 적용된 기본값을 제공합니까? 궁극적으로 DB에 남아있는 값은 SQL 방식으로 DB 서버에 정확히 전달한 것입니다. 또는 변수를 정의한 것입니다. 여기서 사용자가 값을 받아들이지 않으면 기본값을 사용합니다.이 값을 디버그하여 값이 올바르게 처리되었습니다.

1

당신이 (즉, 값이 빈 문자열 또는 null의 경우에도) name에 대한 값을 지정하기 때문에 당신이 당신의 데이터베이스에서 기본 값을 삽입하지 않습니다 사용하는 SQL 쿼리 대신

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

당신의 경우를

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

SQL 쿼리에서 당신이 어떤 필드에 대한 값이 제공됩니다 지정할 수 있습니다 기본 값이 name 필드에 삽입하려는 당신은 삽입 문에서 name 열을 지정하지 않아야합니다 쿼리의 나머지 필드에는 기본값이 포함됩니다 (AUTO_INCREMENT의 경우 다음 정수 값이 사용됩니다). 당신은 당신이 그것을 설명 예 아래 기본값 을 설정 열을주지해야 값을 삽입하는 동안 ... 이런 식으로 시도

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 
당신이 테이블
관련 문제