尝试将 PHP 表单插入 SQL 中


Trying to insert a PHP form into SQL

这个问题中的一些代码可能有点长,所以我会尝试查明我认为问题所在。我遇到的一个问题是我不确定如何判断代码失败的地方。我所拥有的只是它加载或不加载。现在它只是没有任何理由地加载。

首先,我将显示我的表单代码:

function show_form($messages) {         

        // Assign post values if exist
        $username="";
        $password="";
        $firstname="";
        $lastname="";
        $address="";
        $city="";
        $state="";
        $zip="";
        $phone="";
        $card_number="";
        $expire="";
        $code="";
        $product_name="";
        if (isset($_POST["username"]))
          $username=$_POST["username"];
        if (isset($_POST["password"]))
          $password=$_POST["password"];   
        if (isset($_POST["firstname"]))
          $firstname=$_POST["firstname"];  
        if (isset($_POST["lastname"]))
          $lastname=$_POST["lastname"];
        if (isset($_POST["address"]))
          $address=$_POST["address"];     
        if (isset($_POST["city"]))
          $city=$_POST["city"];  
        if (isset($_POST["state"]))
          $state=$_POST["state"];
        if (isset($_POST["zip"]))
          $zip=$_POST["zip"];     
        if (isset($_POST["phone"]))
          $phone=$_POST["phone"];  
        if (isset($_POST["card_number"]))
          $card_number=$_POST["card_number"];
        if (isset($_POST["expire"]))
          $expire=$_POST["expire"];   
        if (isset($_POST["code"]))
          $code=$_POST["code"];  
        if (isset($_POST["product_name"]))
          $product_name=$_POST["product_name"];
    echo "<p></p>";
    echo "<h2> Enter New Customers Data</h2>";
    echo "<p></p>";     
    ?>
    <h5>Complete the information in the form below and click Submit to create your account. All fields are required.</h5>
    <form name="createstudent" method="POST" action="InsertApp.php">    
  Username:<br>
  <input type="text" name="username" value=""><br>
  Last name:<br>
  <input type="text" name="password" value=""><br>
  Street Address:<br>
  <input type="text" name="address" value=""><br>
  First name:<br>
  <input type="text" name="firstname" value=""><br>
  Last name:<br>
  <input type="text" name="lastname" value=""><br>
  Street Address:<br>
  <input type="text" name="address" value=""><br>
  City:<br>
  <input type="text" name="city" value=""><br>
  <br>
  <select name="state" size="1">
  <option value="AK">AK</option>
  <option value="AL">AL</option>
  <option value="AR">AR</option>
  <option value="AZ">AZ</option>
<option value="WV">WV</option>
  <option value="WY">WY</option>
  </select>
  <br>
  <br>
  Zipcode:<br>
  <input type="text" name="zip" value=""><br><br>
  <input type="radio" name="credit_card" value="visa" checked> Visa<br>
  <input type="radio" name="credit_card" value="master"> MasterCard<br>
  <input type="radio" name="credit_card" value="american"> American Express<br>
  <input type="radio" name="credit_card" value="discover"> Discover<br>
  <input type="radio" name="credit_card" value="paypal"> Pay Pal<br><br>
  Phone Number:<br>
  <input type="text" name="phone" valur""><br>
  Credit Card Number:<br>
  <input type="text" name="card_number" value=""><br>
  Expiration Date (Mon/Year):<br>
  <input type="text" name="expire" value=""><br>
  Security Code:<br>
  <input type="text" name="code" value=""><br><br>
  <input type="submit" value="Submit">          
    </form>

我对上面的代码从来没有问题,我只是提供它来向您展示我正在使用的内容。接下来,我将向您展示我添加的一些代码,这些代码稍后会给我带来问题。我知道我应该一次只做一点点,但我搞砸了。

<?php
function validate_form()
{
    $messages = array();
  $redisplay = false;
  // Assign values
  $username = $_POST["username"];
  $password = $_POST["password"];
  $firstname = $_POST["firstname"];
  $lastname = $_POST["lastname"];
  $address = $_POST["address"];
  $city = $_POST["state"];
  $state = $_POST["state"];
  $zip = $_POST["zip"];
  $phone = $_POST["phone"];
  $card_number = $_POST["card_number"];
  $expire = $_POST["expire"];
  $code = $_POST["code"];
  $product_name = $_POST["product_name"];
  $customer = new CustomerClass($username,$password,$firstname,$lastname,$address,$city,$state,$zip,$phone,$card_number,$expire,$code,$product_name);
    $count = countCostumer($customer);        

    // Check for accounts that already exist and Do insert
    if ($count==0)   
    {       
        $res = insertCustomer($customer);
        echo "<h3>Thank you for shopping with us!</h3> ";         
    }
    else 
    {
        echo "<h3>A customer account with that username already exists.</h3> ";         
    }   
  }
 function countCustomer ($customer)
  {          
    // Connect to the database
   $mysqli = connectdb();
   $firstname = $customer->getFirstname();
   $lastname = $customer->getLastname();
   $username = $->getUsername();

        // Connect to the database
    $mysqli = connectdb();
    // Define the Query
    // For Windows MYSQL String is case insensitive
     $Myquery = "SELECT count(*) as count from Customer
           where username='$username'";  
     if ($result = $mysqli->query($Myquery)) 
     {
        /* Fetch the results of the query */         
        while( $row = $result->fetch_assoc() )
        {
          $count=$row["count"];                                           
        }    
        /* Destroy the result set and free the memory used for it */
        $result->close();         
   }
    $mysqli->close();   
    return $count;
  }
  function insertCustomer ($customer)
  {
        // Connect to the database
   $mysqli = connectdb();

   $firstname = $customer->getFirstname();
   $lastname = $customer->getLastname();
   $username = $->getUsername();
        // Add Prepared Statement
        $Query = "INSERT INTO Customer 
             (username,password,firstName,lastName,address,city,state,zip,phone,card_number,expire,code,product_name) 
               VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)";

        $stmt = $mysqli->prepare($Query);
$stmt->bind_param("sssssssiiiiis", $username, $password, $firstname, $lastname, $city, $state, $zip, $phone, $card_number, $expire, $code, $product_name);
$stmt->execute();

    $stmt->close();
    $mysqli->close();
        return true;
    }

我知道这是很多代码可以在那里寻求帮助,但我无法找到查明错误的方法。如果有人知道任何地方,我可以把这段代码放在显示可能有帮助的错误。我尝试使用 W3C 验证。但是,它告诉我我不能在非公共领域使用它。

下面是更多代码:

class StudentClass
{
    // property declaration
    private $username="";
    private $password="";
    private $firstname="";
    private $lastname="";
    private $address="";
    private $city="";   
    private $state="";
    private $zip="";
    private $phone="";
    private $card_number="";
    private $expire="";
    private $code="";
    private $product_name="";

    // Constructor
    public function __construct($username,$password,$firstname,$lastname,$address,$city,$state,$zip,$phone,$card_number,$expire,$code,$product_name)
    {
      $this->username = $username;
      $this->password = $password;
      $this->firstname = $firstname;
      $this->lastname = $lastname;
      $this->address = $address;
      $this->city = $city;
      $this->state = $state;
      $this->zip = $zip;
      $this->phone = $phone;
      $this->card_number = $card_number;
      $this->expire = $expire;
      $this->code = $code;
      $this->product_name = $product_name;
    }
    // Get methods 
      public function getUsername ()
    {
        return $this->username;
    } 
      public function getPassword ()
    {
        return $this->password;
    } 
      public function getFirstname ()
    {
        return $this->firstname;
    } 
      public function getLastname ()
    {
        return $this->lastname;
    } 
      public function getAddress ()
    {
        return $this->address;
    } 
      public function getCity ()
    {
        return $this->city;
    } 
      public function getState ()
    {
        return $this->state;
    } 
      public function getZip ()
    {
        return $this->zip;
    } 
      public function getPhone ()
    {
        return $this->phone;
    } 
      public function getCardNumber ()
    {
        return $this->card_number;
    } 
      public function getExpire ()
    {
        return $this->expire;
    } 
      public function getCode ()
    {
        return $this->code;
    } 
      public function getProductName ()
    {
        return $this->product_name;
    } 

    // Set methods 
    public function setusername ($value)
    {
        $this->username = $value;       
    }
    public function setPassword ($value)
    {
        $this->password = $value;       
    }
    public function setFirstname ($value)
    {
        $this->firstname = $value;      
    }
    public function setLastname ($value)
    {
        $this->lastname = $value;       
    }
    public function setAddress ($value)
    {
        $this->address = $value;        
    }
    public function setCity ($value)
    {
        $this->city = $value;       
    }     
    public function setState ($value)
    {
        $this->state = $value;      
    }
    public function setZip ($value)
    {
        $this->zip = $value;        
    }
    public function setPhone ($value)
    {
        $this->phone = $value;      
    }
    public function setCardNumber ($value)
    {
        $this->card_number = $value;        
    }
    public function setExpire ($value)
    {
        $this->Expire = $value;     
    }
    public function setCode ($value)
    {
        $this->code = $value;       
    }
    public function setProductName ($value)
    {
        $this->product_name = $value;       
    }  
} // End Studentclass
?>

任何帮助或见解将不胜感激。谢谢

首先要排除故障的几件事:

如果要打开error_reporting(这是确定是否存在语法错误的最简单方法),可以在此处找到有关该错误的信息。

在文本的第二个简介中,您有两个情况似乎缺少单词customer而是输入了$->getUsername(),而在第三个简介中,它可能只是一个复制的flub,但没有前导<?php标签。

如果您对安装 IDE 或语法检查器不感兴趣,您可以随时从命令行运行 php -l 或在文件上运行 php_check_syntax。只是一些值得深思的东西。