PHP操作插入表单不起作用


PHP action insert form not working

我想知道哪一个是错误。我试过检查mysql,但没有任何内容插入到我的数据库中。

首先,我的HTML代码就像这个

<form action="registerAction" method="POST">  
        <p class="titleRegister"> Login Details </p>
        <!-- login details -->
        <p> <label for="emailAddress" class="inputField" > Email Address : </label> </p>
        <p> <input id="emailAddress" class="registerField" name="ename" required="required" type="text" placeholder="Your email address"/> </p>
        <p> <label for="password" class="inputField" > Password : </label> </p>
        <p> <input id="password" class="registerField" name="pwd" required="required" type="password" placeholder="Your password"/> </p>
        <p> <label for="password" class="inputField" > Confirmation Password : </label> </p>
        <p> <input id="password" class="registerField" name="mpwd" required="required" type="password" placeholder="Confirmation password" onBlur="pwdCompare()"/> </p>
        <!-- personal details -->
        <p class="titleRegister"> Personal Details </p>
        <!-- hidden to insert db -->
        <input name="registerID" type="hidden"/>
        <input name="pic" type="hidden"/>
        <p>
            <label for="socialTitle" class="inputField" > Title : </label>
            <div class="radio">
                <input type="radio" name="sTitle" value="mr"> Mr
                <input type="radio" name="sTitle" value="mrs"> Mrs
                <input type="radio" name="sTitle" value="ms"> Ms
            </div>
        </p>
        <p> <label for="firstName" class="inputField" > First Name : </label> </p>
        <p> <input id="firstName" class="registerField" name="fname" required="required" type="text" placeholder="Your first name"/> </p>
        <p> <label for="lastName" class="inputField" > Last Name : </label> </p>
        <p> <input id="lastName" class="registerField" name="lname" required="required" type="text" placeholder="Your last name"/></p>
        <p> <label for="mainAddress" class="inputField" > Main Address : </label> </p>
        <p> <input id="mainAddress" class="registerField" name="address" required="required" type="text" placeholder="Your main address"/> </p>
        <p> <label for="countryName" class="inputField" > Country : </label> </p>
        <?php 
        include 'dbconnect.php';
        echo "<select class='"selectCSS'" name='"country'">";
        $country = "SELECT DISTINCT * FROM geo_country ORDER BY country";
        $showCountry = mysqli_query($mysqli, $country);
        while($countryRow = mysqli_fetch_assoc($showCountry))
        {
            $country = htmlspecialchars ($countryRow['country']);
            $countryCode = $countryRow['countryCode'];
            echo "<option value='"$country'">$country</option>'n";
        }
        echo "</select>";
        ?>
        <p> <label for="cityName" class="inputField" > City : </label> </p>
        <?php
        include 'dbconnect.php';
        echo "<select class='"selectCSS'" name='"city'">";
        $city = "SELECT DISTINCT * FROM geo_country INNER JOIN geo_city ORDER BY city WHERE geo_country.countryCode = geo_city.countryCode";
        $showCities = mysqli_query($mysqli, $city);
        while($cityRow = mysqli_fetch_assoc($showCities))
        {
            $city = htmlspecialchars ($cityRow['city']);
            $countryCode = $cityRow['countryCode'];
            echo "<option value='"$city'">$city</option>'n";
        }
        echo "</select>";
        ?>
        <p> <label for="postalCode" class="inputField" > Postal Code : </label> </p>
        <p> <input id="postalCode" class="registerField" name="pcode" required="required" type="text" placeholder="Your postal code"/> </p>
        <p> <input class="registerButton" type="submit" value="REGISTER"> </p>
    </form>

我的php操作在这里:

<?php
include 'dbconnect.php';
if ($_POST['pwd']!= $_POST['mpwd']) {
    echo("Oops! Password did not match! Try again. ");
}
$register_ID = $_POST['registerID'];
$socialTitle = $_POST['sTitle'];
$firstName = ucfirst(strtoupper($_POST['fname']));
$lastName = ucfirst(strtoupper($_POST['lname']));
$emailAddress = htmlspecialchars($_POST['ename']);
$mainAddress = htmlspecialchars($_POST['address']);
$registerCity = $_POST['city'];
$registerCountry = $_POST['country'];
$postalCode = htmlspecialchars($_POST['pcode']);
$profilePic = $_POST['pic'];
$registerPassword = $_POST['pwd'];
$check = "SELECT * FROM register_user where emailAddress = '$emailAddress'";
$checkTitle = mysqli_query($mysqli,$check);
if (mysqli_num_rows($checkTitle) > 0) {
    header("Location: register?error=The name of email has already been taken");
    } else {
        $insertSQL =
        "INSERT INTO register_user ('registerID', 'socialTitle', 'firstName', 'lastName', 'emailAddress', 'mainAddress', 'registerCity', 'registerCountry', 'postalCode', 'profilePic', 'registerPassword')
        VALUES ('$register_ID', '$socialTitle', '$firstName', '$lastName', '$emailAddress', '$mainAddress', '$registerCity', '$registerCountry', '$postalCode', '$profilePic', '$registerPassword')";
        $queryResult = mysqli_query($mysqli,$insertSQL);
        if($queryResult) {
            echo "SUCCESS";
                echo "<p> Name   : $emailAddress </p>";
                echo "<p> Detail : $fname </p>";
            echo "<p> <a href='"index'"> BACK </a> </p>";
        }
    }
?>

结果在新的html页面上什么都没有,在DB中也没有。你能查一下吗?谢谢

您为列使用了错误的标识符,即(单)引号'

('registerID', 'socialTitle', 'firstName', 'lastName', 'emailAddress', 'mainAddress', 'registerCity', 'registerCountry', 'postalCode', 'profilePic', 'registerPassword')

将其更改为:

(registerID, socialTitle, firstName, lastName, emailAddress, mainAddress, registerCity, registerCountry, postalCode, profilePic, registerPassword)

或者使用倒勾。

(`registerID`, `socialTitle`, `firstName`, `lastName`, `emailAddress`, `mainAddress`, `registerCity`, `registerCountry`, `postalCode`, `profilePic`, `registerPassword`)

使用or die(mysqli_error($mysqli))mysqli_query()会显示错误。

另外,除非表单操作是名为registerAction的文件夹中的索引文件或mod重写:

它需要

<form action="registerAction.php" method="POST">

所以,检查一下。只是一个见解。


我还想指出,您当前的代码对SQL注入是开放的。

使用准备好的语句,或将PDO与准备好的声明一起使用它们更安全

不能100%确定,但请尝试更改您的html。

此:

<form action="registerAction" method="POST">

收件人:

<form action="registerAction.php" method="POST">

假设registerAction是php文件的名称。。