2015-04-30 4 views
0

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

Сообщение строки Пример: http://www.domainname.com/insert.php?Phone=07000888888

Это возвращает меня ожидается сообщение об успешном выполнении, однако при проверке базы данных в поле телефон является пустым.

Мой PHP вставки сценарий выглядит следующим образом:

<?php 
$servername = "localhost"; 
$username = "XXXX"; 
$password = "XXXX"; 
$dbname = "Client1"; 

// Create connection 
$conn = mysqli_connect($servername, $username, $password, $dbname); 
// Check connection 
if (!$conn) { 
die("Connection failed: " . mysqli_connect_error()); 
} 
$phone = mysql_real_escape_string($_POST['phone']); 

$sql = "INSERT INTO LiveFeed (phone) 
VALUES ('$_POST[Phone]')"; 

if (mysqli_query($conn, $sql)) { 
echo "New record created successfully"; 
} else { 
echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
} 

mysqli_close($conn); 
?> 

Может кто-нибудь понять, почему это вставить пустую строку с этим?

+0

Если данные взяты из строки запроса, тогда вы должны посмотреть в '$ _GET', и помните' P' и 'p' индекса в' Phone' – Ghost

+1

А также это уязвимо. –

+0

$ sql = "INSERT INTO LiveFeed (телефон) ЗНАЧЕНИЯ (" ". $ _ POST [" phone "]." ') "; –

ответ

0

Есть несколько проблем с кодом, который, как администратор сервера, делает меня слегка неудобным. Надеюсь, мы сможем исправить это и вашу проблему одновременно.

Это то, что я взял.

(я удалены пустые строки для краткости)

<?php 
    // ... 
    $phone = mysql_real_escape_string($_POST['phone']); 
    $sql = "INSERT INTO LiveFeed (phone) 
    VALUES ('$_POST[Phone]')"; 
    // ... 

Первое, что вы правильно спасаясь строку, а затем не используя сбежавшего строку

<?php 
    // ... 
    $phone = mysql_real_escape_string($_POST['phone']); 
    $sql = "INSERT INTO LiveFeed (phone) 
    VALUES ('$phone')"; 
    // ... 

Однако вы никогда не проверить значение чтобы увидеть, есть ли у вас что-нибудь.

<?php 
    // ... 
    if(isset($_POST['phone'])){ 
     $phone = mysql_real_escape_string($_POST['phone']); 
     $sql = "INSERT INTO LiveFeed (phone) 
     VALUES ('$phone')"; 
     // ... 
    }else{ 
     echo '<p><b>Error:</b> "Phone" not given.</p>'; 
     exit(0); // stop and do no more 
    } 
    // ... 

Наконец (на всякий случай): Если вы отправлять данные таким образом http://example.com/example.php?phone=123456789, который $_GET.

<?php 
    // ... 
    if(isset($_GET['phone'])){ 
     $phone = mysql_real_escape_string($_GET['phone']); 
     $sql = "INSERT INTO LiveFeed (phone) 
     VALUES ('$phone')"; 
     // ... 
    } 
    // ... 

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

0

Не видя вашей формы, что помогло бы я предполагаю, что вы используете GET not POST.

Так что вам нужно, чтобы получить свои значения с GET не POST, если следующий результат отправки формы:

http://www.domainname.com/insert.php?Phone=07000888888 

изменение:

$phone = mysql_real_escape_string($_POST['phone']); 

$sql = "INSERT INTO LiveFeed (phone) VALUES ('$_POST[Phone]')"; 

в

$phone = mysql_real_escape_string($_GET['Phone']); 

$sql = "INSERT INTO LiveFeed (phone) VALUES ('$phone')"; 

Дополнительно для некоторой дополнительной проверки ввода вы можете сделать что-то вроде:

$phone = mysql_real_escape_string($_GET['Phone']); 

if(!ctype_digit($phone)){ 
    echo "Incorrect Phone Number format"; 
} 

$sql = "INSERT INTO LiveFeed (phone) VALUES ('$phone')"; 

что бы убедиться, что номер телефона имеет только цифры в нем (если это действительно то, что вы хотите, и не имеют номера +445498390 типа)

+0

По-прежнему вводить пустую строку по какой-то причине. – Stuart

0

Вы код должен быть, как это

<?php 
$servername = "localhost"; 
$username = "XXXX"; 
$password = "XXXX"; 
$dbname = "Client1"; 

// Create connection 
$conn = mysqli_connect($servername, $username, $password, $dbname); 
// Check connection 
if (!$conn) { 
die("Connection failed: " . mysqli_connect_error()); 
} 
$phone = mysqli_real_escape_string($conn, $_GET['phone']); 

$sql = "INSERT INTO LiveFeed (phone) 
VALUES ('".$phone."')"; 

if (mysqli_query($conn, $sql)) { 
echo "New record created successfully"; 
} else { 
echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
} 

mysqli_close($conn); 
?> 
+0

Этот номер также по-прежнему содержит только пустую строку. – Stuart

+0

Пожалуйста, введите код своей формы. – someuser

0

Я, наконец, понял это.

Сам код был в порядке, это был URL-адрес после строчной буквы в верхнем регистре P в телефоне.

Как только я сменил его на телефон, он теперь начал работать правильно.

Спасибо за помощь.

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