2016-07-02 4 views
0

Вот код в файле submit.php. Я не получаю никаких ошибок на моем конце, я думаю, что данные должны поступать в базу данных, но я не знаю, где это происходит после того, как пользователь нажимает кнопку submit. Я думаю, что проблема находится где-то во втором php if else, поскольку он работал до того, как я добавил, проверяя, был ли пользователь зарегистрирован или нет.Форма не вставляет данные в базу данных mysql

<?php 
session_start(); 
include_once 'dbconnect.php'; 

// variables for input data 
$Comment = $_POST['Comment']; 
$ip=$_SERVER['REMOTE_ADDR']; 
// variables for input data 

// sql query for inserting data into database 
$sql_query = "INSERT INTO sentences(Comment, ipaddress) VALUES('$Comment','$ip')"; 
// sql query for inserting data into database 
?> 
<html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>The Internet Writes a Book</title> 
<link rel="stylesheet" href="style.css" type="text/css" /> 
<link rel="stylesheet" href="css/bootstrap.min.css" type="text/css" /> 
</head> 
<body> 
<center> 

<nav class="navbar navbar-default" role="navigation"> 
    <div class="container-fluid"> 
     <div class="navbar-header"> 
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar1"> 
       <span class="sr-only">Toggle navigation</span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
      </button> 
      <a class="navbar-brand" href="index.php">The Internet Writes A Novel</a> 
     </div> 
     <div class="collapse navbar-collapse" id="navbar1"> 
      <ul class="nav navbar-nav navbar-right"> 
       <?php if (isset($_SESSION['usr_id'])) { ?> 
       <li><p class="navbar-text">Signed in as <?php echo $_SESSION['usr_name']; ?></p></li> 
       <li><a href="logout.php">Log Out</a></li> 
       <?php } else { ?> 
       <li><a href="login.php">Login</a></li> 
       <li><a href="register.php">Sign Up</a></li> 
       <?php } ?> 
      </ul> 
     </div> 
    </div> 
</nav> 




<?php if (isset($_SESSION['usr_id'])) { ?> 
    <div id="body"> 
    <div id="content"> 
     <form method="post"> 
      <table align="center"> 
       <tr> 
        <td><input type="paragraph_text" cols="50" rows="10" name="Comment" placeholder="Sentence" required /></td> 
       </tr> 
       <tr> 
        <td><button type="submit" name="btn-save"><strong>Add to the Novel</strong></button></td> 
       </tr> 
      </table> 
     </form> 
    </div> 
</div> 
<?php } else { ?> 
    <a href="http://theinternetwritesanovel.tk/login.php">You must be logged in to submit a sentence!</a> 
<?php } ?> 
<br> 
<a href="http://theinternetwritesanovel.tk/">Click here to view the novel!</a> 
</div> 
</center> 
</body> 
</html> 

ответ

0

Вы фактически не отправили запрос SQL. Вам нужно использовать свой объект соединителя базы данных, а затем использовать mysqli_query($dbc,$sqlStatement), где $ dbc - ваш соединитель базы данных;

Также вы должны сначала проверить, что тип запроса - POST (то есть, что пользователь отправил форму, а не просто зашел на страницу, что будет GET-запросом). Итак, первая проверка if($_SERVER['REQUEST_METHOD'] == 'POST');

Кроме того, вы действительно должны дезинфицировать свои данные, используя что-то вроде mysqli_real_escape_string. Но даже этого не достаточно, вы должны изучить использование подготовленных операторов с помощью mysqli или с помощью PDO.

Для получения более подробной информации об использовании функции mysqli_query http://www.w3schools.com/php/func_mysqli_query.asp

Для получения более подробной информации о Подготовленные заявления http://php.net/manual/en/mysqli.prepare.php

+0

ли это не вставить данные в базу данных? $ sql_query = "INSERT INTO предложения (комментарий, ipaddress) VALUES ('$ Comment', '$ ip')"; – kooldawgstar

+0

Подготовленные заявления значительно безопаснее, абсолютно. «Sanitizing» с функциями эвакуации является подверженным ошибкам. По возможности используйте ссылку на официальную документацию PHP. Сайты, такие как w3schools, имеют совершенно различное качество. – tadman

+0

Нет $ sql_query - это буквально просто переменная со строкой внутри. Инициализация строки не будет немедленно отправлена ​​в базу данных. Когда вы выполняете mysqli_query ($ dbc, $ sqlStatement), оператор SQL фактически отправляется на обрабатываемый сервер MySQL. И да, я согласен, санировать себя на самом деле недостаточно, поэтому я упоминаю, используя подготовленные заявления. –

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