2013-12-25 4 views
0
<?php 
include 'config.php'; 
$lat=$_GET["latitudee"]; 
$lon=$_GET["longitude"]; 
$sql="INSERT INTO coordinates(latitude,longitude) 
     VALUES ('$_POST[$lat]','$_POST[$lon]')"; 
     if (!mysqli_query($con,$sql)) 
     { 
     die('Error: ' . mysqli_error($con)); 
     } 
     echo "1 record added"; 
    ?> 

Это таблица у меня есть в моей базе данных:значения не добавляются в базу данных?

CREATE TABLE IF NOT EXISTS `coordinates` (
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `latitude` float NOT NULL, 
    `longitude` float NOT NULL, 
    `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `id` (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ; 

http://localhost.com/input.php?latitudee=3.14159&longitude=4.14159

значения не вставляются. в чем проблема?

+0

Не знаю. Вы получаете сообщения об ошибках? –

+0

нет ошибки ... он говорит «1 запись добавлена», но значений нет –

+1

Почему вы используете '$ _POST', когда используете метод GET? – Rikesh

ответ

5

попробовать это:

$sql="INSERT INTO coordinates(latitude,longitude) 
VALUES 
('$lat','$lon')"; 

bacause вы сохранили значение приобретают в переменной, как это:

$lat=$_GET["latitudee"]; 
$lon=$_GET["longitude"]; 

и в запросе вы пишете это:
$_POST[$lat]','$_POST[$lon] так изменить его, как я предлагаю.

Примечание стороны: убедитесь, что метод, который вы использовали: POST or GET и escape переменные, чтобы предотвратить SQL инъекции.

Read this:How can I prevent SQL injection in PHP?

+0

Да, его рабочие благодарности –

+0

Данные, которые вы пытаетесь вставить, передаются по URL-адресу. Поэтому они находятся в массиве $ _GET. Массив $ _POST обычно используется при использовании формы для данных POST. Определив $ lat и $ lon, вы получите информацию из URL-адреса в этих двух vars, и вы можете использовать информацию в своем запросе. Обратите внимание, что ваш код подвержен SQL-инъекции. –

+0

Вы дали ему пример, свободный от SQL-инъекций? –

0

Используйте этот

<?php 
include 'config.php'; 
$lat=$_GET["latitudee"]; 
$lon=$_GET["longitude"]; 
$sql="INSERT INTO coordinates(latitude,longitude) 
     VALUES ('$lat','$lon')"; 
$In_qrr = mysqli_query($con,$sql); 
     if (!In_qrr) 
     { 
     die('Error: ' . mysqli_error($con)); 
     } 
     echo "1 record added"; 
    ?> 
0
  1. У вас есть ошибка опечатка в $ _GET [ "latitudee"] индекс. Need latitude вместо latitudee
  2. Ваш код работает нормально. Возможно, элементы $ _GET и $ _POST не установлены. Включите error_reporting или используйте этот проверочный код.

`` `

<?php 
include 'config.php'; 

//-- 
echo isset($_GET["latitudee"]) ?: 'GET array element with index latitudee is not set'; 
echo isset($_GET["longitude"]) ?: 'GET array element with index longitude is not set'; 
//-- 

$lat=$_GET["latitudee"]; 
$lon=$_GET["longitude"]; 

//-- 
echo isset($_POST[$lat]) ?: 'POST array element with index ' . $lat . ' is not set'; 
echo isset($_POST[$lon]) ?: 'POST array element with index ' . $lon . ' is not set'; 
//-- 

$sql="INSERT INTO coordinates(latitude,longitude) 
VALUES 
    ('$_POST[$lat]','$_POST[$lon]')"; 
     if (!mysqli_query($con,$sql)) 
     { 
     die('Error: ' . mysqli_error($con)); 
     } 
     echo "1 record added"; 
0

первых, вы должны использовать $ лат на месте $ _POST [$ лат] .Since вы уже присвоить $ лат = $ _ GET [ "latitudee"]; так почему вы используете $ _POST [$ lat]. Используйте использование ниже кода.

<?php 
    include 'config.php'; 
    $lat=$_GET["latitudee"]; 
    $lon=$_GET["longitude"]; 
    $sql="INSERT INTO coordinates(latitude,longitude) 
      VALUES ('$lat','$lon')"; 
      if (!mysqli_query($con,$sql)) 
      { 
      die('Error: ' . mysqli_error($con)); 
      } 
      echo "1 record added"; 
     ?> 
Смежные вопросы