簡體   English   中英

PHP表單在數據庫中插入數據

[英]PHP Form to Insert data in Database

我創建了一個將數據插入數據庫的表單。 我獲得了兩個函數來獲取數據並顯示它們,它們位於一個名為queryDb.php的文件中:

function addCustomer($fname, $lname, $address, $phone) {
    $db = new MyDB();
    if(!$db){
        echo '<script type="text/javascript">alert("'.$db->lastErrorMsg().'");</script>';
    } else {
        //echo "Opened database successfully\n";
    }

    $sql ='INSERT INTO CUSTOMERS (FIRSTNAME, LASTNAME, ADDRESS, PHONE) VALUES ("'.$fname.'", "'.$lname.'", "'.$address.'", "'.$phone.'");';
    $db->query($sql);
}

獲取功能:

function getCustomers($searchTerm = null) {      
    $db = new MyDB();

    if(!$db){
        echo '<script type="text/javascript">alert("'.$db->lastErrorMsg().'");</script>';
    } else {
        //echo "Opened database successfully\n";
    }

    if(!$searchTerm) {
        $sql ='SELECT * from CUSTOMERS;';
    } else {
        $sql ='SELECT * FROM CUSTOMERS WHERE FIRSTNAME LIKE "'.$searchTerm.'" OR LASTNAME LIKE "'.$searchTerm.'" OR ADDRESS LIKE "'.$searchTerm.'" OR PHONE  LIKE "'.$searchTerm.'"';
    }
    $ret = $db->query($sql);
    $array = [];

    if(!$ret){
       echo $db->lastErrorMsg();
       return [];
    } else {
        while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
            $array[] = $row;
        }
        $db->close();
        return $array;
    }
}

在我的reviewsubmit.php中,我的排名靠前:

<?php
    require_once "queryDb.php";
    $firstname = $_POST["firstname"];
    $lastname = $_POST["lastname"];
    $address = $_POST["address"];
    $phone = $_POST["phone"];
    addCustomer($firstname, $lastname, $address, $phone);
?>

這是我的表格:

<form action="reviewsubmit.php" method="post">
    Firstname
    <input type="text" id="firstname" name="firstname">  />
    Lastname
    <input type="text" id="lastname" name="lastname"">  />
    Address
    <input type="text" id="address" name="address">  />
    Phone
    <input type="text" id="phone" name="phone">  />
    <input type="submit" name="Submit" value="Submit" />
</form>

問題是當我使用表單將信息提交到數據庫時,當我第一次單擊提交時,它為所有內容提交空值。 然后,當我再次點擊Submit時,它將提交實際值: image

您的HTML標記實際上並不是最好的標記,它可能會導致一些異常。 同時,理想的是將必需的屬性添加到您的字段中,以確保在提交之前填充所有必需的字段,如下所示:

<!-- TO GUARD AGAINST ACCIDENTALLY INSERTING EMPTY VALUES -->
<!-- WHY NOT MAKE THE INPUT FIELDS MANDATORY -->
<form action="reviewsubmit.php" method="post">
    <label for="firstname">Firstname</label>
    <input type="text" id="firstname" name="firstname" required  />

    <label for="lastname">Lastname</label>
    <input type="text" id="lastname" name="lastname" required />

    <label for="address">Address</label>
    <input type="text" id="address" name="address" required />

    <label for="phone">Telephone</label>
    <input type="text" id="phone" name="phone" required/>

    <input type="submit" name="Submit" value="Submit" />
</form>

在PHP方面,在提交到數據庫之前,您還可以花更多的精力檢查提交的值不為空或為null。 這樣,您就可以確定前端和后端的情況。 這可能是這樣做的一種方式:

<?php
    // FILE: index.php
    require_once "queryDb.php";
    $firstname  = isset($_POST["firstname"])? htmlspecialchars(trim($_POST["firstname"]))   : null;
    $lastname   = isset($_POST["lastname"]) ? htmlspecialchars(trim($_POST["lastname"]))    : null;
    $address    = isset($_POST["address"])  ? htmlspecialchars(trim($_POST["address"]))     : null;
    $phone      = isset($_POST["phone"])    ? htmlspecialchars(trim($_POST["phone"]))       : null;

    // CHECK THAT YOU DON'T HAVE NULL OR EMPTY FIELD VALUES BEFORE INSERTING ANYTHING INTO DATABASE
    if(!is_null($firstname) && !is_null($lastname) && !is_null($address) && !is_null($phone) ){
        addCustomer($firstname, $lastname, $address, $phone);
    }

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM