2015-02-08 4 views
2

Я создаю веб-страницу, которая вставляет данные в базу данных. Я успешно подключаюсь к моей базе данных, и мой запрос на вставку работает, поскольку он добавляет строки intot eh database, но из данных не получается пройти через так, что строки создаются (я видел их в phpmyadmin), но данные пустые.Как отправить данные формы HTML в базу данных?

У меня есть две страницы. Один для отображения формы и тот, который получает данные формы и запускает sql-запрос.

это данные для вида веб-страницы

<body> 


<form action="insert.php" method=”post”> 

Venue: 
<input type="text" name = "venue"> 
<br> 
Date: 
<input type="text" name = "date"> 
<br> 
Time: 
<input type="text" name = "time"> 
<br> 
Postcode: 
<input type="text" name = "postcode"> 
<br> 

<input type="submit" Value = "submit" name= "submit"> 

</form> 

Это код, который я использую для ввода данных. Я не включил код подключения для базы данных, так как у меня нет проблемы с этим.

$venue = $_POST['venue']; 
$date = $_POST['date']; 
$time = $_POST['time']; 
$postcode = $_POST['postcode']; 

$query = "INSERT into `event`(`eventVenue`, `eventDate`, `eventTime`, 
`EventPostCode`) VALUES ( '$venue', '$date','$time', '$postcode')"; 


mysqli_query($dbconn, $query); 

<hr> 

</body> 

Db соединения:

$host="50.62.209.87"; // Host name 
$username="************"; // Mysql username 
$password="********"; // Mysql password 
$db_name="extras"; // Database name 
// Connect to server and select databse. 
$dbconn = mysqli_connect($host, $username, $password)or die("cannot connect"); 
mysqli_select_db($dbconn, $db_name)or die("cannot select DB"); 
+0

Показать код. Это актуально здесь. –

+6

** Опасность **: вы уязвимы для [SQL-инъекций] (http://bobby-tables.com/) **, которые вам нужно [защищать] (http://stackoverflow.com/questions/ 60174/best-way-to-prevent-sql-injection-in-php). – Quentin

+0

Вы должны использовать ** mysqli_real_escape_string ($ value); ** для проверки перед использованием sql. – Mehmet

ответ

5

Проверьте двойные кавычки вашего сообщения метода. использовать это вместо

method="post" 
+0

так критик. Хорошая работа –

+0

Большое спасибо, если бы моя эттензия к деталям была такой же бога, как ваша, я был бы более успешным! – user3519506

+1

Без проблем, я рад, что это помогло вам. –

0

Использование MySQLi или PDO вы можете блокировать инъекции SQL, как показано ниже, надеюсь, что это будет работать для вас. Я использовал PDO.

$query = "INSERT INTO event (`eventVenue`, `eventDate`, `eventTime`, 
`EventPostCode`) VALUES ( ':venue', ':date',':time', ':postcode')"; 

$insert = $db -> prepare($query); 
$insert -> execute(
array(
    "venue" => $venue, "date" => $date, "time" => $time, "postcode" => $postcode) 
) 
); 
+2

Как это решить их проблему? Вы не даете никаких объяснений. –

+0

@JohnConde, люди уже сообщили, что есть SQL-инъекция. – Rashad

+0

давайте сосредоточимся на том, как заставить его работать сначала, а затем обсудим вопрос о SQL-инъекции. –

1

Вы должны бороться с проблемой ступенчато:

  1. echo $_POST и посмотреть, если каждое значение OK

  2. var_dump($query) и посмотреть, если все в порядке с верхушек и цитаты и т.д .. .

  3. попробуйте без ``

+0

Thankyou. Я попробовал echo $ meeting и echo $ _POST ['Место встречи'], и niether, кажется, печатает что-либо на экране. Значения, которые вводятся в форму, оцениваются по адресу – user3519506

0

Во-первых, убедитесь, что соединение осуществляется с использованием этого IP-адреса. И так как это из HTML-формы, я предлагаю вам использовать strip_tags и isset. Похоже, что это бесполезно для него, но работает, как я пытаюсь на локальном сервере.

$venue = isset($_POST['venue']); 
$venue = strip_tags($venue); 
$date = isset($_POST['date']); 
$venue = strip_tags($date); 
$time = isset($_POST['time']); 
$venue = strip_tags($time); 
$postcode = isset($_POST['postcode']); 
$venue = strip_tags($postcode); 

Всё. Кроме того, вы должны также рассмотреть вопрос о том, как обрабатывать SQL-инъекцию, как было предложено.

+0

. Этот код не работает –

+0

Разве вы не читаете, что я только что протестировал? –

+0

$ Место проведения = isset ($ _ POST ['место проведения']); $ place = strip_tags ($ venue); echo $ meeting; Я пробовал это, но эхо все еще ничего не дало. – user3519506

0

кажется, что элементы передаются как метод GET по умолчанию form из-за ошибки в quotes как ответ «Марк Te». Тем не менее, если вы хотите аннулировать это или планируете получать данные от GET, например, в параметрах ссылок, в том числе при его передаче из метода POST формы.

<a href="insert.php?venue=lorem&date=2015-12-20&time=12">Get Result</a> 

Лучше использовать $_REQUEST вместо $_POST.

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