Извините, что показался новичком с этим, но у меня есть запрос, который я написал, и он, похоже, не работает, и я убедился, что все эти переменные действительны. Ошибок нет, ничего. Это действие формы. Я проверил запрос, переписал его, а также скопировал / вставил туда запрос с другой страницы; все равно не повезло! Я где-то сделал глупую ошибку?

Форма:

<div class="container">
<?php
 if($_SESSION['submit_success']){
echo '<div class="alert alert-dismissable alert-success">
  <button type="button" class="close" data-dismiss="alert"></button>
  <strong>Done! </strong>Your form has been submitted. Please wait up to a week for a reply. Good luck!
</div>';
  } elseif($_SESSION['submit_error']){
    echo '<div class="alert alert-dismissable alert-danger">
  <button type="button" class="close" data-dismiss="alert"></button>
  <strong>Error! </strong>You have already sent an application.
</div>';
  }
?>
  <div class="well">
    <center><legend>Sponsorship form</legend></center>
      <form class="form-horizontal" autocomplete="off" method="post" action="submitsponsorship.php">
      <fieldset>
        <div class="form-group">
            <label class="control-label r_110">Your details</label><br>
            <div class="col-lg-10">
                <input type="name" name="name" class="form-control r_90" autocomplete="off" placeholder="Your full name" required>
            </div>
        </div>
        <div class="form-group">
            <div class="col-lg-10">
                <input type="email" name="email" class="form-control r_90" autocomplete="off" placeholder="Your email address" required>
            </div>
        </div>
        <div class="form-group">
            <div class="col-lg-10">
                <input type="text" name="ign" class="form-control r_90" autocomplete="off" placeholder="Your in-game name (Minecraft username)" required>
            </div>
        </div>
        <div class="form-group">
            <div class="col-lg-10">
                <input type="number" name="age" class="form-control r_90" autocomplete="off" placeholder="Your age" required>
            </div>
        </div>
        <div class="form-group">
            <div class="col-lg-10">
                <input type="text" name="country" class="form-control r_90" autocomplete="off" placeholder="Your country" required>
            </div>
        </div>
        <br><label class="control-label r_90">Server details</label><br>
        <div class="form-group">
            <div class="col-lg-10">
                <input type="name" name="size" class="form-control r_90" autocomplete="off" placeholder="What size server are you looking for?" required>
            </div>
        </div>
        <div class="form-group">
            <div class="col-lg-10">
                <select class="form-control r_90" name="serverlocation" required>
                    <option value="">Choose a server location</option>
                    <option value="europe">Europe (France)</option>
                    <option value="usa">USA</option>
                </select>
            </div>
        </div>
        <br><br><label class="control-label r_90">Convince us!</label><br>
        <div class="form-group">
            <div class="col-lg-10">
                <textarea class="form-control r_90" rows="3" name="why-requesting" placeholder="Why are you requesting sponsorship?" required></textarea>
            </div>
        </div>
        <div class="form-group">
            <div class="col-lg-10">
                <textarea class="form-control r_90" rows="3" name="why-shouldwe" placeholder="Why should we provide you with sponsorship and not someone else?" required></textarea>
            </div>
        </div>
        <div class="form-group">
            <div class="col-lg-10">
                <textarea class="form-control r_90" rows="3" name="how-promote" placeholder="How do you intend on promoting Swift?" required></textarea>
            </div>
        </div>
        <div class="form-group">
            <div class="col-lg-10">
                <label class="control-label r_90"><small><i>(optional)</i></small></label>
                <textarea class="form-control r_90" rows="3" name="social-links" placeholder="Links to YouTube Channel / Website etc."></textarea>
            </div>
        </div><br>
        <div class="form-group">
            <div class="r_500">
                <input class="btn btn-success" type="submit" value="Apply">
            </div>
        </div>
      </fieldset>
      </form>
    <small>Please note that by clicking <i>Apply</i>, you agree to advertising for ******* in the way stated above, <i>if</i> provided with a server.</small>
  </div>
</div>
<?php unset($_SESSION['submit_success']) ?>

Это submitsponsorship.php:

    <?php
include 'overall.php';
error_reporting(E_ALL);
include 'resources/database.php';
$email = $_POST['email'];
$check = mysqli_query($db, "SELECT * FROM sponsorships WHERE email = '". $email ."'");
var_dump($check);

if(mysqli_num_rows($check) > 0){
  $_SESSION['submit_error'] = 1;
  header('Location: /sponsorships');
} else {
  $name = $_POST['name'];
  $status = 0;
  $ign = $_POST['ign'];
  $age = $_POST['age'];
  $country = $_POST['country'];
  $size = $_POST['size'];
  $serverlocation = $_POST['serverlocation'];
  $why_requesting = $_POST['why-requesting'];
  $why_shouldwe = $_POST['why-shouldwe'];
  $how_promote = $_POST['how-promote'];
  $social_links = $_POST['social-links'];
  $applyquery = mysqli_query($db, "INSERT INTO `sponsorships` (`status`, `name`, `email`, `ign`, `age`, `country`, `size`, `serverlocation`, `why-requesting`, `why-shouldwe`, `how-promote`, `social-links`) VALUES (".$status.",".$name.",".$email.",".$ign.",".$age.",".$country.",".$size.",".$serverlocation.",".$why_requesting.",".$why_shouldwe.",".$how_promote.",".$social_links.")");
  //$_SESSION['submit_success'] = 1;
  //header("Location: /sponsorships");
  echo "success";
} ?>

И да, он распечатывает «успех», но ничего не вводит в базу данных. Заранее извиняюсь, если что-то глупое.

Может быть, вы хотите проверить подключение к базе данных? (Прекрасно работает для любого другого запроса в моем проекте) Вот он;

<?php

$db = mysqli_connect("localhost","root","","swiftsetups");

// Check connection //

if (mysqli_connect_errno())
  {
  echo "MySQL Connection Error: " . mysqli_connect_error();
  }

?>
-1
Shepley 20 Авг 2014 в 03:00
1
`or die (mysqli_error ())` после вашего запроса было бы хорошим началом. Также используйте параметризованные запросы !!!
 – 
scrowler
20 Авг 2014 в 03:02
3
Строковые литералы без кавычек (и без экранирования). Спросите mysqli_error(). Лучше всего исправить это с помощью подготовленных операторов.
 – 
mario
20 Авг 2014 в 03:02
Неправильный тип действия при цитировании. Хорошо => '". YYY ."' и т. Д. php.net/manual/en/ function.error-reporting.php - это ". XXX ." <= Yours-Bad.
 – 
Funk Forty Niner
20 Авг 2014 в 03:03
Почему бы не проверить ошибку? : mysqli_query ("..") или выход (mysqli_error ());
 – 
Manish
20 Авг 2014 в 03:03
Это прекрасный пример «Как неправильно использовать mysqli». Не помещайте входные значения в SQL-запрос с конкатенацией строк. Используйте подготовленные заявления!
 – 
Gerifield
20 Авг 2014 в 03:05

1 ответ

Лучший ответ

Попробуйте изменить это

$applyquery = mysqli_query($db, "INSERT INTO `sponsorships` (`status`, `name`, `email`, `ign`, `age`, `country`, `size`, `serverlocation`, `why-requesting`, `why-shouldwe`, `how-promote`, `social-links`) VALUES (".$status.",".$name.",".$email.",".$ign.",".$age.",".$country.",".$size.",".$serverlocation.",".$why_requesting.",".$why_shouldwe.",".$how_promote.",".$social_links.")");

К этому:

$applyquery = mysqli_query($db, "INSERT INTO sponsorships (status, name, email, ign, age, country, size, serverlocation, why-requesting, why-shouldwe, how-promote, social-links) VALUES ('$status','$name','$email','$ign','$age','$country','$size','$serverlocation','$why_requesting','$why_shouldwe','$how_promote','$social_links')");

По моему опыту, mysqli_query не действует как функция echo(), в которой вы объединяете вещи, используя ". $var ."

РЕДАКТИРОВАТЬ Однако после просмотра комментариев кажется, что '".$var."' приемлемо?

-1
Colum 20 Авг 2014 в 03:16
Да, с этими комментариями все заработало, тем не менее, спасибо за помощь!
 – 
Shepley
20 Авг 2014 в 03:19
Возможно, вы также захотите защитить свой $_POST[''] от возможных вредоносных записей? php.net/manual/en/security.database.sql-injection. php
 – 
Colum
20 Авг 2014 в 03:22