Я не получаю никаких ошибок, но он не будет вставлять данные в базу данных - PullRequest
0 голосов
/ 03 февраля 2019

Я делаю регистрацию на сайте и не получаю никаких ошибок, но она не будет вставлять данные в базу данных

Я перепробовал почти все, но я просто не могу понять это

/ Файл конфигурации уже требуется. Я поместил его в свой файл header.php, который автоматически требуется для каждого файла, который я создаю, поэтому это не ошибка конфигурации /

<?php
    if(isset($_POST["signupbtn"])){
        if (($_POST["firstname"])!= "" && ($_POST["lastname"])!= "" && ($_POST["email"])!= "" && ($_POST["address"])!= "" && ($_POST["city"])!= "" && ($_POST["phone"])!= "") {
            $checkToInsert = $mysqli->query("SELECT id from registrations where email='".$mysqli->real_escape_string($_POST["email"])."' AND username='".$mysqli->real_escape_string($_POST["username"])."'");
            $row = $checkToInsert->fetch_assoc();
            $count = $checkToInsert->num_rows;
            if($count < 1){
                $sql = "INSERT INTO registrations (firstname, lastname, username, email, password, age, city, address, phone, gender, purpose, hash)
                VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
                $stmt = $mysqli->prepare($sql);
                $stmt->bind_param("ssssiissiiis",  $firstname, $lastname, $username, $email, $password1, $age, $city, $address, $phone, $gender, $purpose, $hash);
                $firstname = $mysqli>real_escape_string($_POST["firstname"]);
                $lastname = $mysqli->real_escape_string($_POST["lastname"]);
                $username = $mysqli->real_escape_string($_POST["username"]);
                $email =  $mysqli->real_escape_string($_POST["email"]);
                $password1 = $mysqli->real_escape_string($_POST["password"]);
                $age =  $mysqli->real_escape_string($_POST["age"]);
                $address = $mysqli->real_escape_string($_POST["address"]);
                $city =  $mysqli->real_escape_string($_POST["city"]);
                $phone = $mysqli->real_escape_string($_POST["phone"]);
                $gender =  $mysqli->real_escape_string($_POST["gender"]);
                $purpose =  $mysqli->real_escape_string($_POST["purpose"]);
                $hash = md5( rand(0,1000) );
                $stmt->execute();
?>

<form action="?page=login" method="POST"> 
    <div class="form-group">
        <h1>Sign Up</h1>
        <p>Please fill in this form to create an account.</p>
            <hr>

        <label for="firstname">Firstname</label>
        <input type="text" placeholder="Enter firstname" class="form-control" name="firstname" required><br>
    </div>
    <div class="form-group">
            <label for="lastname">Lastname</label>
            <input type="text" class="form-control" placeholder="Enter lastname" name="lastname" required><br>
    </div>
    <div class="form-group">
            <label for="username">Username</label>
            <input type="text" placeholder="Enter username" class="form-control" name="username" required><br>
    </div>
    <div class="form-group">
            <label for="email">Email</label>
            <input type="email" placeholder="Enter Email" class="form-control" name="email" required><br>
    </div>
    <div class="form-group">
            <label for="password">Password</label>
            <input type="password" placeholder="Enter Password" name="password" class="form-control" required><br>
    </div>
    <div class="form-group">
            <label for="age">Age</label>
            <input type="date" placeholder="Enter age" class="form-control" name="age" required><br>
    </div>
    <div class="form-group">
            <label for="address">Address</label>
            <input type="text" placeholder="Enter address" class="form-control" name="address"><br>
    </div>
    <div class="form-group">
            <label for="city">City</label>
            <input type="text" placeholder="Enter city" class="form-control" name="city" required><br>
    </div>
    <div class="form-group">
            <label for="phone">Phone number</label>
            <input type="text" placeholder="Enter phonenumber" class="form-control" name="phone" required><br>
    </div>
    <div class="form-group">
    <label class="form-check-label" for="gender">Gender</label><br>
    <input type="radio" class="form-check-label" name="gender" value="0" required> Male<br>
    <input type="radio" class="form-check-label" name="gender" value="1" required> Female<br>
    <input type="radio" class="form-check-label" name="gender" value="2" required> Other<br>
  </div><br>
  <div class="form-group">
    <label class="form-check-label" for="purpose">Why are you here?</label><br>
    <input type="radio" class="form-check-label" name="purpose" value="0" required> I want to work<br>
    <input type="radio" class="form-check-label" name="purpose" value="1"required> I'm an employer<br>
  </div><br>
    <div class="form-group">
            <button type="submit" class="btn btn-primary" name="signupbtn">Sign Up</button>
    </div>
  </div>
</form

Я хочу вставить данные в базу данных

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019
$sql = "INSERT INTO registrations (firstname, lastname, username, email, password, age, city, address, phone, gender, purpose, hash) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("ssssiissiiis", $_POST["firstname"], $_POST["lastname"], $_POST["username"], $_POST["email"], $_POST["password"], $_POST["age"], $_POST["city"], $_POST["address"], $_POST["phone"], $_POST["gender"], $_POST["purpose"], md5(rand(0,1000)));
$stmt->execute();

$mysqli->real_escape_string() действительно бесполезен в этом случае, особенно когда параметры уже связаны;это двойная бесполезность.это только добавляет некоторого шума в довольно простой скрипт.проверка $_POST с isset() и !empty() все еще рекомендуется.

0 голосов
/ 03 февраля 2019

Вы не можете использовать переменные, которые не созданы, поэтому порядок кода должен быть:

$sql = "INSERT INTO registrations (firstname, lastname, username, email, password, age, city, address, phone, gender, purpose, hash) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
$stmt = $mysqli->prepare($sql);
$firstname = $mysqli>real_escape_string($_POST["firstname"]);
$lastname = $mysqli->real_escape_string($_POST["lastname"]);
$username = $mysqli->real_escape_string($_POST["username"]);
$email =  $mysqli->real_escape_string($_POST["email"]);
$password1 = $mysqli->real_escape_string($_POST["password"]);
$age =  $mysqli->real_escape_string($_POST["age"]);
$address = $mysqli->real_escape_string($_POST["address"]);
$city =  $mysqli->real_escape_string($_POST["city"]);
$phone = $mysqli->real_escape_string($_POST["phone"]);
$gender =  $mysqli->real_escape_string($_POST["gender"]);
$purpose =  $mysqli->real_escape_string($_POST["purpose"]);
$hash = md5( rand(0,1000) );
$stmt->bind_param("ssssiissiiis",  $firstname, $lastname, $username, $email, $password1, $age, $city, $address, $phone, $gender, $purpose, $hash);

$stmt->execute();

Также обратите внимание, что real_escape_string не требуется при подготовке запросов.Однако вы можете использовать (int) перед переменными, которые должны быть целыми числами.Вы также можете проверить типы i или s переменных.

Вместо ($_POST["firstname"])!= "" вы можете просто использовать встроенную функцию: !empty($_POST['firstname'])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...