2016-05-02 4 views
0

Im пытается создать простую форму контакта и вставить данные в базу данных. Я знаю, что есть много вопросов, очень похожих на это, но я просто не могу понять, что не так с моим кодом.
Когда я заполняю все поля формы и пытаюсь отправить, я всегда получаю это !mysqli_query($con, $sql) == FALSE. Другими словами, я не могу вставить какие-либо данные в базу данных.
Вставьте данные формы в базу данных

<?php 

if(isset($_GET['send'])){ 

    $name= $_GET['name']; 
    $email= $_GET['email']; 
    $phone = $_GET['phone']; 
    $message = $_GET['message']; 

    if(isset($name) && isset($email) && isset($phone) && isset($message) && !empty($name) && !empty($email) && !empty($phone) && !empty($message)){ 
     echo '<div class="alert alert-success" role="alert"><p class="alert">Your message was sent successfully.</p></div>'; 

    $con = mysqli_connect('localhost', 'root', '') or die('Cannot connect to database.'); 

    if(!mysqli_select_db($con, 'users')){ 
     echo 'Database is not choosen.'; 
    } 

    $sql = "INSERT INTO person(Name, Email, Phone, Message) VALUES ('$name', '$email', '$phone', '$message')"; 

     if(!mysqli_query($con, $sql)){ 
      echo "Data is not inserted."; 
     } 
    } 

    else{ 
     echo '<div class="alert alert-danger" role="alert"><p class="alert">Some fields are empty.</p></div>'; 
    } 
} 

?> 

<form action = "contact.php" method="get"> 
    <div class="form-group"> 
     <input type="text" class="form-control" placeholder="Name" name="name"> 
    </div> 
    <div class="form-group"> 
     <input type="email" class="form-control" placeholder="Email" name="email"> 
    </div> 
    <div class="form-group"> 
     <input type="number_format" class="form-control" placeholder="Phone" name="phone"> 
    </div> 
    <div class="form-group"> 
     <textarea class="form-control" rows="8" placeholder="Message" name="message"></textarea> 
    </div> 
    <div class="form-group"> 
     <button class = "btn btn-primary" style="width: 100%; height: 70px" type="submit" name="send"><span class="glyphicon glyphicon-send"></span></button> 
    </div> 
</form> 
+2

Проконсультируйтесь по следующим ссылкам http://php.net/manual/en/mysqli.error.php и http://php.net/manual/en/function.error-reporting.php и примените это к своему код. –

+0

btw, вы отметили как «контактную форму». Почему это? –

+0

'type =" number_format "' это недопустимый тип, кстати. Это даже не тип HTML5. –

ответ

2

Nota: Проводка в качестве вики сообщества. Не потому, что я не уверен в ответе, а потому, что я голосовал, чтобы закрыть вопрос уже, честно говоря ;-)

type="number_format" это недопустимый тип.

Либо используйте type="number", если HTML5 доступен для использования и действительно является целым числом, либо как type="text", чтобы сделать его совместимым с кросс-браузером. В любом случае, ваш MySQL будет обрабатывать его.

Именно по этой причине ваш код не позволяет вам здесь.

Consult следующие на допустимых типов входных:

Плюс, как бонус:

Ваш нынешний код открыт для SQL injection. Используйте prepared statements, или PDO с prepared statements.


Consult эти следующие ссылки http://php.net/manual/en/mysqli.error.php и http://php.net/manual/en/function.error-reporting.php и применить его к коду.

Вы должны также проверить для пустых полей, а не с помощью isset():

В противном случае, вы можете иметь ошибки/проблемы; это если вы проверяете/смотрите на них.

Смежные вопросы