繁体   English   中英

为什么mysql默认值不起作用?

[英]Why won't mysql default value work?

我一直在学习php,目前正在尝试撰写简单的文章/博客。 我希望用户输入文章的“ 标题 ”和“ 正文 ”,但是作者不是必需的,因此我希望作者的默认值为“ 匿名 ”。 因此,当用户提交帖子时,它将具有ID,标题,名称,正文。 如果未指定“ 名称 ”,则其值为“ 匿名

我的帖子链接

这是我的PHP代码

<?php
$errorClass = 'errorClass';

$msg = '';
$msgClass = 'alert-danger';


if(isset($_POST['submit'])){
    // get data
    $title = trim(htmlspecialchars($_POST['title']));
    $name = trim(htmlspecialchars($_POST['name']));
    $post = trim(htmlspecialchars($_POST['post']));

    if(!empty($title) AND !empty($post)){

        // connect to the database
        $host = "localhost";
        $username = "root";
        $password = "";
        $db = "blog";


        $conn = new mysqli($host,$username,$password,$db);
        if($conn->connect_error){
            echo "Error:". $conn->connect_error;
        } else {
            $sql = "INSERT INTO post(title,name,post) VALUES ('$title','$name','$post')";
            if($conn->query($sql)){
                $msg = 'Success';
                $msgClass = 'alert-success';
            } else {
                echo " error" .mysqli_error($conn);
            }
        }




    } else {
        $msg = 'Please fill in empty areas.';
        $msgClass = 'alert-danger';

    }

}


?>

还有HTML

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="https://bootswatch.com/lumen/bootstrap.min.css">
    <script>
        function sendTo(){
            setTimeout(function () {
                window.location.href = "http://localhost/blog/";
            }, 1000);
        }

        function validateInput(){
            if(document.myForm.title.value === "" && document.myForm.body.value === ""){
                document.myForm.title.style.borderColor = 'red';
                document.myForm.body.style.borderColor = 'red';
                document.myForm.title.focus();
                return false;
            }
            return true;
        }

    </script>
    <title>Document</title>
</head>
<body">
<nav class="navbar navbar-default">
    <div class="container-fluid">
        <div class="navbar-header">
            <a class="navbar-brand" href="#">MyBlog</a>
        </div>
        <ul class="nav navbar-nav">
            <li><a href="index.php">Home</a></li>
            <li><a href="new_post.php">Create Post</a></li>
        </ul>
    </div>
</nav>
<div class="container">
    <?php if($msg != ""):  ?>
        <div class="alert <?php echo $msgClass; ?>"><?php echo $msg; ?></div>
    <?php endif; ?>
    <div class="jumbotron">
        <form class="form-horizontal" method="post" name="myForm" onsubmit="return validateInput()" action="<?php echo $_SERVER['PHP_SELF']; ?>">
            <fieldset>
                <legend>Create new blog post</legend>
                <div class="form-group">
                    <label  class="col-lg-2 control-label">Title</label>
                    <div class="col-lg-10">
                        <input type="text" class="form-control"  id="title" placeholder="Enter a title for your post..."  name="title" autocomplete="off" style="background-image: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAAXNSR0IArs4c6QAAAPhJREFUOBHlU70KgzAQPlMhEvoQTg6OPoOjT+JWOnRqkUKHgqWP4OQbOPokTk6OTkVULNSLVc62oJmbIdzd95NcuGjX2/3YVI/Ts+t0WLE2ut5xsQ0O+90F6UxFjAI8qNcEGONia08e6MNONYwCS7EQAizLmtGUDEzTBNd1fxsYhjEBnHPQNG3KKTYV34F8ec/zwHEciOMYyrIE3/ehKAqIoggo9inGXKmFXwbyBkmSQJqmUNe15IRhCG3byphitm1/eUzDM4qR0TTNjEixGdAnSi3keS5vSk2UDKqqgizLqB4YzvassiKhGtZ/jDMtLOnHz7TE+yf8BaDZXA509yeBAAAAAElFTkSuQmCC&quot;); background-repeat: no-repeat; background-attachment: scroll; background-size: 16px 18px; background-position: 98% 50%; cursor: auto;">
                    </div>
                </div>
                <div class="form-group">
                    <label  class="col-lg-2 control-label">Name</label>
                    <div class="col-lg-10">
                        <input type="text" class="form-control" placeholder="Enter your name..."  name="name" autocomplete="off" style="background-image: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAAXNSR0IArs4c6QAAAPhJREFUOBHlU70KgzAQPlMhEvoQTg6OPoOjT+JWOnRqkUKHgqWP4OQbOPokTk6OTkVULNSLVc62oJmbIdzd95NcuGjX2/3YVI/Ts+t0WLE2ut5xsQ0O+90F6UxFjAI8qNcEGONia08e6MNONYwCS7EQAizLmtGUDEzTBNd1fxsYhjEBnHPQNG3KKTYV34F8ec/zwHEciOMYyrIE3/ehKAqIoggo9inGXKmFXwbyBkmSQJqmUNe15IRhCG3byphitm1/eUzDM4qR0TTNjEixGdAnSi3keS5vSk2UDKqqgizLqB4YzvassiKhGtZ/jDMtLOnHz7TE+yf8BaDZXA509yeBAAAAAElFTkSuQmCC&quot;); background-repeat: no-repeat; background-attachment: scroll; background-size: 16px 18px; background-position: 98% 50%; cursor: auto;">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-lg-2 control-label">Textarea</label>
                    <div class="col-lg-10">
                        <textarea class="form-control" rows="7" name="post" id="body"></textarea>
                        <span class="help-block">Write your feelings...</span>
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-lg-10 col-lg-offset-2">
                        <button type="reset" class="btn btn-default" onclick="sendTo()">Cancel</button>
                        <button type="submit" class="btn btn-primary" name="submit">Submit</button>
                    </div>
                </div>
            </fieldset>
        </form>
    </div>
</div>
</body>
</html>

您能在将其插入mysql之前检查一下name字段是否为空并为其分配一个值吗?

if (empty($name)){
$name = 'Anonymous';
}

在插入数据之前使用条件,

if(trim(htmlspecialchars($_POST['name']))){
  $name = trim(htmlspecialchars($_POST['name']));
}else{
  $name = 'Anonymous';
}

希望这可以帮助 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM