dongpo1203
dongpo1203
2016-03-13 09:45

每页重新加载时插入空数据

已采纳

I have a problem about posting data to DB.When i reload the page,or go to the website,it sends null data to DB.Its because i haven't functioned the button(well,i mean an onclick event) for this.Directly wrote a php code under the form and it works if you fill the spaces such as text and textarea and click the button.Though,Im new to PHP,So what I exactly need is,learning how to function a button to insert data to database using PHP to prevent inserting data on every load of form.

Here is the code

<?php
        $host="localhost";
        $user="root";
        $password="";
        $db="mkappform";

        $con=mysqli_connect("$host","$user","$password","$db");
        if (! $con) die ("Unable to connect to database");

        $name=$_POST["name"];
        $nick=$_POST["nick"];
        $pvnick=$_POST["pvnick"];
        $age=$_POST["age"];
        $country=$_POST["country"];
        $timezone=$_POST["timezone"];
        $servers=$_POST["servers"];
        $checkban=$_POST["checkban"];
        $contact=$_POST["contact"];
        $history=$_POST["history"];
        $reasons=$_POST["reasons"];
        $whypastclans=$_POST["whypastclans"];
        $anyotherinfo=$_POST["anyotherinfo"];




        $query=mysqli_query($con,
        "INSERT INTO mkappform(name,nick,pvnick,age,country,timezone,servers,checkban,contact,history,reasons,whypastclans,anyotherinfo) 
        values('$name','$nick','$pvnick','$age','$country','$timezone','$servers','$checkban','$contact','$history','$reasons','$whypastclans','$anyotherinfo')");
        if($query == true)
        echo "Application was sent successfully!!"
        ?>
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • dongshuo8756 dongshuo8756 5年前

    Use action attribute of your form. For example action="index.php?action=form" Because isset($_POST) && !empty($_POST) is most of time not enough if you are dealing with bigger webapp.

        if(isset($_GET["action"]
        {
           //Open database
           switch($_GET["action"])
        {
          case "form":
            //callYourForm
             form();
           break;
    
          case "anotherThing":
             anotherThing();
           break;
    //can do more things if needed..
        }
        }
    
    点赞 评论 复制链接分享
  • dougao2830 dougao2830 5年前

    1) Use PDO statements instead of mysqli it is better and simple.

    2) Using '$name' will be equal to '$name' because using single quote take the string as it is, instead use double quote like this "$name".

    3) Here an example that uses the previous notes :

    <?php
            $host="localhost";
            $user="root";
            $password="";
            $db="mkappform";
    
            try {
                    $pdo = new PDO("mysql:host=$host;dbname=$db","$user","$password");
    
                    $name=$_POST["name"];
                    $nick=$_POST["nick"];
                    $pvnick=$_POST["pvnick"];
                    $age=$_POST["age"];
                    $country=$_POST["country"];
                    $timezone=$_POST["timezone"];
                    $servers=$_POST["servers"];
                    $checkban=$_POST["checkban"];
                    $contact=$_POST["contact"];
                    $history=$_POST["history"];
                    $reasons=$_POST["reasons"];
                    $whypastclans=$_POST["whypastclans"];
                    $anyotherinfo=$_POST["anyotherinfo"];
    
                   $insert_status = $pdo->query("INSERT INTO mkappform(name,nick,pvnick,age,country,timezone,servers,checkban,contact,history,reasons,whypastclans,anyotherinfo)
                    values('$name','$nick','$pvnick','$age','$country','$timezone','$servers','$checkban','$contact','$history','$reasons','$whypastclans','$anyotherinfo')");
                    if($insert_status){
                            echo "Application was sent successfully!!"                        
                    }else{
                            echo "an error occured when inserting data";
                    }
    
            } catch (PDOException $e) {
                    echo $e->getMessage(); 
                    die("Unable to connect to database");
            }
    
            ?>
    

    In reality we use parameter binding when inserting into databases to avoid SQL Injections

    点赞 评论 复制链接分享