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')";

代わりに、デフォルト値をフィールドに挿入する場合は、insert ステートメントで列を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 に答える