无法将用户注册详细信息插入数据库



我在注册后无法将用户插入数据库中,我已经尽力了,但没有成功,我在这里真的有帮助,请我想知道以及在脚本中做错了什么。

这是我的注册HTML脚本:

<span class='details' ><h1><bold>ENTER YOUR DETAILS HERE</bold></h1></span>
  <form action="trotle.php"  method="POST">            

              <div class="form-group" style="margin-left:50px;color:#000099; font-family:times;">
              <input type="hidden" class="form-control" name="id" placeholder="enter your id" required />
                </div><br>

               <div class="form-group" style="margin-left:50px;color:#000099; font-family:times;">
              <label>fullname</label>
                  <input type="text" class="form-control" name="fullname" placeholder="Enter your fullname" required />
                </div><br>
                <div class="form-group" style="margin-left:50px;color:#000099; font-family:times;">
              <label>username</label>
                  <input type="username" class="form-control" name="username" placeholder="Enter your username" required />
                </div><br>

                <div class="form-group" >
                   <label>password</label>
                 <input type="password" class="form-control" name="password"  placeholder="type in your password" required />
                </div>
              <br>
              <div class="form-group" style="margin-left:50px;color:#000099; font-family:times;" />
                <label>email</label>
                  <input type="email" class="form-control" name="email"  placeholder="Enter your email" required />
                </div><br>
                <div class="form-group" style="margin-left:50px;color:#000099; font-family:times;">
                <label>country</label>
                  <input type="text" class="form-control" name="country"  placeholder="Enter your country" required />
                </div><br>

                <div class="form-group" style="margin-left:50px;color:#000099; font-family:times;">
                <label>phone number</label>
                  <input type="number" class="form-control" name="phonenumber"  placeholder="Enter your phonenumber" required />
                </div><br>
                <div class="form-group" style="margin-left:50px;color:#000099; font-family:times;">
                <label>Alternative phone number</label>
                  <input type="number" class="form-control" name="alternativephonenumber"  placeholder="Enter your alternative phonenumber" required />
                </div><br>

              <div class="form-group"  style="margin-left:50px;color:#000099; font-family:times;">
                <label>referrer</label>
                  <input type="text" class="form-control" name="referrer" placeholder="type in who referred you here" required />
                </div><br>

              <div class="form-group"  style="margin-left:50px;color:#000099; font-family:times;"">
                <label>paymentmode</label>
                  <select name="paymentmode" class="form-control" required />
<option value="">Select your paymentmode</option>
<option value="bitcoin">bitcoin</option>
<option value="perfectmoney">perfectmoney</option>
<option value="naira">naira</option>
                  </select>
                </div>
                <br>
           <div class="form-group" style='text-align: center;padding-top: 30px;'>
              <input type="checkbox" style=" vertical-align: sub; margin-left: 120px;margin-bottom: -15px; " required><a href="homepage.php">  I agree with </a><a href='../terms' target="_blank">Terms and conditions</a><br>
              <input type="submit" class="btn btn-success" name="submit_signup" value='REGISTER' style="margin-left:145px;border:none; margin-bottom: -10px; background-color: green; font-weight: bold;border-style: dotted;">
              <a href="trotle.php"><input type="post" class="btn btn-success" value='LOGIN' style="margin-left:140px;background-color: green; font-weight: bold;border-style: dotted; border-color:black ;padding: 5px; size:20px; margin-bottom:-10px;"></a>
              </div>
              <br>
              <?php

              ?>
              </form>

我用于将用户插入数据库的PHP脚本如下;

<?php
$id=$fullname=$username=$password=$email=$country= $phonenumber=$alternativephonenumber=$referrer=$paymentmode="";
if(isset($_POST) && array_key_exists('submit_signup',$_POST))   
{  
$id= $_POST['id'];
if(isset($_POST['id'])){
$id= $_POST['id'];  
}
$fullname=$_POST['fullname'];
if(isset($_POST['fullname'])){
$fullname= $_POST['fullname'];  
}
else{
    echo 'please enter your fullname';
}
$username= $_POST['username'];
if(isset($_POST['username'])){
$username= $_POST['username'];  
}
else{
    echo 'enter your username';
}
$password= $_POST['password'];
if(isset($_POST['password'])){
$password= $_POST['password'];  
}
else{
    echo 'enter your password';
}
$email= $_POST['email'];
if(isset($_POST['email'])){
$email= $_POST['email'];    
}
else{
    echo 'enter your email';
}
$country= $_POST['country'];
if(isset($_POST['country'])){
$country= $_POST['country'];    
}
else{
    echo 'enter your country';
}
$phonenumber= $_POST['phonenumber'];
if(isset($_POST['phonenumber'])){
$phonenumber= $_POST['phonenumber'];    
}
else{
    echo 'enter your phonenumber';
}
$alternativephonenumber= $_POST['alternativephonenumber'];
if(isset($_POST['alternativephonenumber'])){
$alternativephonenumber= $_POST['alternativephonenumber'];  
}
else{
    echo 'enter your alternativephonenumber';
}
$referrer= $_POST['referrer'];
if(isset($_POST['referrer'])){
$referrer= $_POST['referrer'];  
}
else{
    echo 'enter your referrer';
}
$paymentmode= $_POST['paymentmode']; 
if(isset($_POST['paymentmode'])){
$paymentmode= $_POST['paymentmode'];    
}
else{var_dump($_POST['id']);
    echo 'enter your paymentmode';
}
}
    else {
        echo 'nah';
    }
    $serverhost='localhost';
$serverdb='charles';
$serveruser='root';
$serverpassword='';


try{ 
    $connect= new PDO("mysql:host=$serverhost;dbname=charles;" , $serveruser, $serverpassword);
 $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     } 
      catch( PDOException $e)
        {
            echo $e->getmessage();
        }
     if($connect){
        echo 'database successful!';
     }

$sql="INSERT INTO users(id, fullname, username, password, email, country, phonenumber, alternativephonenumber, referrer, paymentmode)VALUES(:id, :fullname, :username, :password, :email, :country, :phonenumber, :alternativephonenumber, :referrer, :paymentmode)";
$query=$connect->prepare($sql);
$query->bindParam(':id', $id, PDO::PARAM_INT);
$query->bindParam(':fullname', $fullname, PDO::PARAM_STR);
$query->bindParam(':username', $username, PDO::PARAM_STR);
$query->bindParam(':password', $password, PDO::PARAM_STR);
$query->bindParam(':email', $email, PDO::PARAM_STR);
$query->bindParam(':country', $country, PDO::PARAM_STR);
$query->bindParam(':phonenumber', $phonenumber, PDO::PARAM_INT);
$query->bindParam(':alternativephonenumber', $alternativephonenumber, PDO::PARAM_INT);
$query->bindParam(':referrer', $referrer, PDO::PARAM_STR);
$query->bindParam(':paymentmode', $paymentmode, PDO::PARAM_STR);
$query->execute();


?>

像这样更改您的php脚本并尝试,如果您没有得到错误,则可能是您的验证是错误的

$id=$fullname=$username=$password=$email=$country= $phonenumber=$alternativephonenumber=$referrer=$paymentmode="";
if(isset($_POST['submit_signup']))  //simplified validation 
{  
if(isset($_POST['id'])){
$id= $_POST['id'];  
}
if(isset($_POST['fullname'])){
$fullname= $_POST['fullname'];  
}
else{
    echo 'please enter your fullname';
}
if(isset($_POST['username'])){
$username= $_POST['username'];  
}
else{
    echo 'enter your username';
}
if(isset($_POST['password'])){
$password= $_POST['password'];  
}
else{
    echo 'enter your password';
}
if(isset($_POST['email'])){
$email= $_POST['email'];    
}
else{
    echo 'enter your email';
}
if(isset($_POST['country'])){
$country= $_POST['country'];    
}
else{
    echo 'enter your country';
}
if(isset($_POST['phonenumber'])){
$phonenumber= $_POST['phonenumber'];    
}
else{
    echo 'enter your phonenumber';
}
if(isset($_POST['alternativephonenumber'])){
$alternativephonenumber= $_POST['alternativephonenumber'];  
}
else{
    echo 'enter your alternativephonenumber';
}
if(isset($_POST['referrer'])){
$referrer= $_POST['referrer'];  
}
else{
    echo 'enter your referrer';
}
if(isset($_POST['paymentmode'])){
$paymentmode= $_POST['paymentmode'];    
}
else{var_dump($_POST['id']);
    echo 'enter your paymentmode';
}
}
    else {
        echo 'nah';
    }
    $serverhost='localhost';
$serverdb='charles';
$serveruser='root';
$serverpassword='';


try{ 
    $connect= new PDO("mysql:host=$serverhost;dbname=$serverdb;" , $serveruser, $serverpassword);
 $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     } 
      catch( PDOException $e)
        {
            echo $e->getmessage();
        }
     if($connect){
        echo 'database successful!';
     }

$sql="INSERT INTO users(id, fullname, username, password, email, country, phonenumber, alternativephonenumber, referrer, paymentmode)VALUES(:id, :fullname, :username, :password, :email, :country, :phonenumber, :alternativephonenumber, :referrer, :paymentmode)";
$query=$connect->prepare($sql);
$query->bindParam(':id', $id, PDO::PARAM_INT);
$query->bindParam(':fullname', $fullname, PDO::PARAM_STR);
$query->bindParam(':username', $username, PDO::PARAM_STR);
$query->bindParam(':password', $password, PDO::PARAM_STR);
$query->bindParam(':email', $email, PDO::PARAM_STR);
$query->bindParam(':country', $country, PDO::PARAM_STR);
$query->bindParam(':phonenumber', $phonenumber, PDO::PARAM_INT);
$query->bindParam(':alternativephonenumber', $alternativephonenumber, PDO::PARAM_INT);
$query->bindParam(':referrer', $referrer, PDO::PARAM_STR);
$query->bindParam(':paymentmode', $paymentmode, PDO::PARAM_STR);
$query->execute();

进行的更改:

  1. 简化了验证
  2. 删除了变量的不必要分配,如果您使用的是isset,则不要将其分配给isset
  3. 更新您的DB名称,并具有DB名称的变量

最后一个建议,如果您与测试的验证错误相呼应,否则将其保留在变量中,并在适当的位置回声。并将您的插入查询代码块在验证中。

而不是无法操纵,内联样式,使用CSS并使用类,ID或父级>子>子选择器等分配样式。

div元素在标签末端不使用/(请参阅原始代码中的电子邮件部分(

没有输入类型POST(<input type="post" class="btn btn-success" value='LOGIN'... />( - 大概一个按钮会更好?

id字段隐藏在HTML中,但大概是DB使用auto-increment字段(主键(为此,因此不必发送此值 - 用户在提交表单之前不会知道此值为了防止他们使用他们想要的任何数字,

<style>
    .form-group{margin-left:50px;color:#000099; font-family:times;}
    .form-control{}
    input[type='checkbox']{vertical-align: sub; margin-left: 120px;margin-bottom: -15px;}
    input[type='submit']{margin-left:145px;border:none; margin-bottom: -10px; background-color: green; font-weight: bold;border-style: dotted;}
    input[type='button']{margin-left:140px;background-color: green; font-weight: bold;border-style: dotted; border-color:black ;padding: 5px; size:20px; margin-bottom:-10px;}
</style>

<span class='details' >
   <h1>
      <bold>ENTER YOUR DETAILS HERE</bold>
   </h1>
</span>
<form action='trotle.php' method='POST'>
   <!-- HOW does a user enter a value here if it is HIDDEN??? Removed `required` attribute -->
   <div class='form-group'>
      <input type='hidden' class='form-control' name='id' placeholder='enter your id' />
   </div>
   <br>
   <div class='form-group'>
      <label>fullname</label>
      <input type='text' class='form-control' name='fullname' placeholder='Enter your fullname' required />
   </div>
   <br>
   <div class='form-group'>
      <label>username</label>
      <input type='username' class='form-control' name='username' placeholder='Enter your username' required />
   </div>
   <br>
   <div class='form-group' >
      <label>password</label>
      <input type='password' class='form-control' name='password' placeholder='type in your password' required />
   </div>
   <br>
   <div class='form-group'>
      <label>email</label>
      <input type='email' class='form-control' name='email'  placeholder='Enter your email' required />
   </div>
   <br>
   <div class='form-group'>
      <label>country</label>
      <input type='text' class='form-control' name='country' placeholder='Enter your country' required />
   </div>
   <br>
   <div class='form-group'>
      <label>phone number</label>
      <input type='number' class='form-control' name='phonenumber' placeholder='Enter your phonenumber' required />
   </div>
   <br>
   <div class='form-group'>
      <label>Alternative phone number</label>
      <input type='number' class='form-control' name='alternativephonenumber' placeholder='Enter your alternative phonenumber' required />
   </div>
   <br>
   <div class='form-group'>
      <label>referrer</label>
      <input type='text' class='form-control' name='referrer' placeholder='type in who referred you here' required />
   </div>
   <br>
   <div class='form-group'>
      <label>paymentmode</label>
      <select name='paymentmode' class='form-control' required />
         <option value=''>Select your paymentmode</option>
         <option value='bitcoin'>bitcoin</option>
         <option value='perfectmoney'>perfectmoney</option>
         <option value='naira'>naira</option>
      </select>
   </div>
   <br>
   <div class='form-group'>
      <!-- this checkbox needs a name!! Assign name `terms` -->
      <input type='checkbox' name='terms' required />
      <a href='homepage.php'>  I agree with </a><a href='../terms' target='_blank'>Terms and conditions</a>
      <br>
      <input type='submit' class='btn btn-success' name='submit_signup' value='REGISTER' />
      <a href='trotle.php'>
        <input type='button' class='btn btn-success' value='LOGIN' />
      </a>
   </div>
   <br>
</form>


<?php
    if( $_SERVER['REQUEST_METHOD']=='POST' && isset( $_POST['submit_signup'] ) ){
        /* id should be an auto-increment field in the db */
        $id = isset( $_POST['id'] ) ? $_POST['id'] : false;
        $fullname = isset( $_POST['fullname'] ) ? $_POST['fullname'] : false;
        $username = isset( $_POST['username'] ) ? $_POST['username'] : false;
        $password = isset( $_POST['password'] ) ? $_POST['password'] : false;
        $email = isset( $_POST['email'] ) ? $_POST['email'] : false;
        $country = isset( $_POST['country'] ) ? $_POST['country'] : false;
        $phonenumber = isset( $_POST['phonenumber'] ) ? $_POST['phonenumber'] : false;
        $alternativephonenumber = isset( $_POST['alternativephonenumber'] ) ? $_POST['alternativephonenumber'] : false;
        $referrer = isset( $_POST['referrer'] ) ? $_POST['referrer'] : false;
        $paymentmode = isset( $_POST['paymentmode'] ) ? $_POST['paymentmode'] : false;


        $errors=array();
        if( !$fullname )$errors[]='please enter your fullname';
        if( !$username )$errors[]='enter your username';
        if( !$password )$errors[]='enter your password';
        if( !$email )$errors[]='enter your email';
        if( !$country )$errors[]='enter your country';
        if( !$phonenumber )$errors[]='enter your phonenumber';
        if( !$alternativephonenumber )$errors[]='enter your alternativephonenumber';
        if( !$referrer )$errors[]='enter your referrer';
        if( !$paymentmode )$errors[]='enter your paymentmode';

        if( !empty( $errors ) ){
            /* display any errors with form submission */
            foreach( $errors as $error ){
                echo $error . '<br />';
            }
        } else {
            try{
                $serverhost='localhost';
                $serverdb='charles';
                $serveruser='root';
                $serverpassword='';

                $connect=new PDO("mysql:host={$serverhost};dbname={$serverdb};" , $serveruser, $serverpassword);
                $connect->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

                if( $connect ){
                    $sql="insert into `users`
                            ( `fullname`, `username`, `password`, `email`, `country`, `phonenumber`, `alternativephonenumber`, `referrer`, `paymentmode` )
                            values
                            ( :fullname, :username, :password, :email, :country, :phonenumber, :alternativephonenumber, :referrer, :paymentmode )";
                    $stmt=$connect->prepare( $sql );
                    if( $stmt ){
                        $stmt->bindParam(':fullname', $fullname, PDO::PARAM_STR);
                        $stmt->bindParam(':username', $username, PDO::PARAM_STR);
                        $stmt->bindParam(':password', $password, PDO::PARAM_STR);
                        $stmt->bindParam(':email', $email, PDO::PARAM_STR);
                        $stmt->bindParam(':country', $country, PDO::PARAM_STR);
                        $stmt->bindParam(':phonenumber', $phonenumber );
                        $stmt->bindParam(':alternativephonenumber', $alternativephonenumber );
                        $stmt->bindParam(':referrer', $referrer, PDO::PARAM_STR);
                        $stmt->bindParam(':paymentmode', $paymentmode, PDO::PARAM_STR);
                        $result = $stmt->execute();
                        echo $result ? 'success' : 'fail';
                    }
                }
            } catch( PDOException $e ) {
                echo $e->getMessage();
            }
        }
    }
?>

最新更新