簡體   English   中英

鏈接到此表單的PHP不會向我的數據庫提交條目

[英]The PHP linked to this form isn't submitting entries to my database

我正在使用的網站上有一個表單,需要將信息提交到MySQL數據庫。 我主要是一名網頁設計師,而PHP對我來說有點新。 我已經將此PHP代碼編寫為HTML表單的操作,如下所示:

<?php 
//only process if $_POST isn't empty

if ( ! empty( $_POST ) ){

//connect to mysql
$mysqli = new mysqli( 'localhost', 'user', 'pass', 'dbname' );

//check connection
if ( $mysqli->connect_error ) {
    die( 'Connect Error: ' . $mysqli->connect_errno . ': ' . $mysqli->connect_error );
}

//insert data
$sql = ("
INSERT INTO `table` (`ID`, `u_fname`, `u_lname`, `u_email`) 
VALUES (NULL, '{$mysqli->real_escape_string($_POST['u_fname'])}', '{$mysqli->real_escape_string($_POST['u_lname'])}', {$mysqli->real_escape_string($_POST['u_email'])}')");

$insert = $mysqli->query($sql);

//print response from sql
if ( $insert ) {
    echo "Success! Row ID: {$mysqli->insert_id}";   
}
else {
    die("Error: {$mysqli->errno} : {$mysqli->error}");
}

//close connection
$mysqli->close();
}
?>

相關的HTML表單在這里:

<div class="form-container">
    <form action="signupform.php" method="post" class="isubmit" name="signup" onsubmit="swal({
                    type: 'success',
                    title: 'Thanks!',
                    showConfirmButton: false,
                    timer: 1500
                })">
        <input required type="text" name="u_fname" class="first-name" placeholder="First Name">

        <input required type="text" name="u_lname" class="last-name" placeholder="Last Name">

        <input required type="text" name="u_email" class="email" placeholder="Email">

        <button class="isubmit submit-text" type="submit">submit</button>
    </form>
</div>

HTML和PHP文件是分開的,但是在同一目錄中。 我知道需要使PHP更安全以避免注入,但這不是我的問題。 問題是,當按下“提交”按鈕時,PHP不會將條目發送到我的數據庫。 數據庫保持不變,我需要的是當用戶在HTML表單上單擊“提交”按鈕時,表單字段中的信息即可填充數據庫表。 我的代碼的任何幫助或更好的方法的建議將不勝感激。

從查詢中的字符串中刪除mysqli_real_escape_string,然后將一個變量設置為等於發布值。 您的“ id”也需要從插入內容中刪除,因為數據庫中的ID應該是自動遞增的。 在錯誤驗證和准備好的語句中添加了有助於防止sql注入的代碼。

//insert data
<?php 
    if(!empty($_POST)) {          
        if(isset($_POST['submit'])){
            //connect to mysql
            $mysqli = mysqli_connect( 'localhost', 'user', 'pass', 'dbname' );

            //check connection
            if (!$mysqli) {
                die( 'Connect Error: ' . mysqli_error());
            }

            $u_fname = mysqli_real_escape_string($mysqli, $_POST['u_fname']);
            $u_lname = mysqli_real_escape_string($mysqli, $_POST['u_lname']);
            $u_email = mysqli_real_escape_string($mysqli, $_POST['u_email']);
            //VALIDATION ARRAY
            $error = [
                "u_fname"=> '',
                "u_lname"=> '',
                "u_email"=> ''
            ];

            if($u_fname == '') {
                $error['u_fname'] = "Please Enter Your First Name";
            }

            if($u_lname == '') {
                $error['u_fname'] = "Please Enter Your Last Name";
            }

            if($u_email == '') {
                $error['u_fname'] = "Please Enter Your Email";
            }
            else {
                //IF NO ERRORS INSERT DATA    
                $stmt = mysqli_prepare($mysqli, "INSERT INTO `table` (`u_fname`, `u_lname`, `u_email`) VALUES (?, ?, ?)");

                mysqli_stmt_bind_param($stmt, 'sss', $u_fname, $u_lname, $u_email);

                mysqli_stmt_execute($stmt);

                //print response from sql
                if ($stmt ) {
                    echo "Success!";   
                }
                else {
                    die("Error" . mysqli_error());
                }
                //close connection
                mysqli_close($mysqli);
            }
        }
    }
?>

而對於形式

<div class="form-container">
    <form action="signupform.php" method="post" class="isubmit" name="signup">
        <input required type="text" name="u_fname" class="first-name" placeholder="First Name">
        <span><?php echo isset($error['u_fname']) ? $error['u_fname'] : ''?></span>
        <input required type="text" name="u_lname" class="last-name" placeholder="Last Name">
        <span><?php echo isset($error['u_lname']) ? $error['u_lname'] : ''?></span>
        <input required type="text" name="u_email" class="email" placeholder="Email">
        <span><?php echo isset($error['u_email']) ? $error['u_email'] : ''?></span>
        <button class="isubmit submit-text" type="submit" name="submit">submit</button>
    </form>
</div>

暫無
暫無

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

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