Angular - PHP API Нет переменных, вставленных в базу данных

0

Я работал над тем, как переносить переменные из моего приложения в мою базу данных. Теперь он успешно делает соединение, но не вставляет переменные в базу данных (он создает новую строку, но переменные пусты).

Я отправлю свой http.get

$scope.signupuser = function(info){
$scope.user = [];
$scope.user.email = 
$scope.user.voornaam = 
$scope.user.achternaam = 
$scope.user.postcode = 
$scope.user.woonplaats = 
$scope.request = $http({
    url: "www.test.com/example.php",
    method: "POST",
    params: { 
        voornaam: $scope.user.voornaam, 
        achternaam: $scope.user.achternaam, 
        email: $scope.user.email, 
        postcode: $scope.user.postcode, 
        woonplaats: $scope.user.woonplaats
    },
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
});
$scope.request.success(function(data, status, headers, config){
    console.log("inserted Successfully")
})

Мой пример.php

<?php

include '../dbconnect.php';

try {
     json_decode(file_get_contents("php://input"));
     print_r($_POST);
     // set the PDO error mode to exception
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $sql = "INSERT INTO 
                users ( 
                     email, 
                     voornaam, 
                     achternaam, 
                     postcode, 
                     woonplaats
                ) VALUES (
                     '$email', 
                     '$voornaam', 
                     '$achternaam', 
                     '$postcode', 
                     '$woonplaats'
                )";
    // use exec() because no results are returned
    $conn->exec($sql);
    echo "New record created successfully";
} catch(PDOException $e) {
    echo $sql . "<br>" . $e->getMessage();
}
$conn = null;

?>

Я подозреваю, что есть ошибка в том, как example.php обрабатывает поставленные переменные, но я не уверен.

Заранее спасибо! :)

РЕДАКТИРОВАТЬ:

Сообщение об ошибке для уточнения

Array ( [{"voornaam":"gfa","achternaam":"g","email":"[email protected]","postcode":"8271AT","woonplaats":"fdsa"}] => ) 
Notice: Undefined index: email in /var/www/vhosts/text.com/httpdocs/example.phpon line 13

Notice: Undefined index: voornaam in /var/www/vhosts/text.com/httpdocs/example.php on line 14

Notice: Undefined index: achternaam in /var/www/vhosts/text.com/httpdocs/example.php on line 15

Notice: Undefined index: postcode in /var/www/vhosts/text.com/httpdocs/example.php on line 16

Notice: Undefined index: woonplaats in /var/www/vhosts/text.com/httpdocs/example.php on line 17
New record created successfully

ВТОРОЙ РЕДАКТИРОВАНИЕ:

Print_r ($ _ POST)

Array ( [{"voornaam":"Jogn","achternaam":"Doe","email":"johndoe@gmail_com","postcode":"3252AR","woonplaats":"Zwolle"}] => ) 

print_r ($ _ POST [0])

   Notice: Undefined offset: 0 in /var/www/vhosts/test.com/httpdocs/example.php on line 9

print_r ($ _ REQUEST)

Array ( [{"voornaam":"Jogn","achternaam":"Doe","email":"johndoe@gmail_com","postcode":"3252AR","woonplaats":"Zwolle"}] => ) 
  • 0
    Что происходит со всеми $scope.voornaam = //nothing в javascript?
  • 0
    Да, извините, что все еще осталось попытаться установить значения для переменных и затем отправить их. Чтобы увидеть, если это было проблемой в моем javascript вместо отправки части, куда я отправляю переменные. Должен был убрать это
Показать ещё 6 комментариев
Теги:
ionic-framework

2 ответа

0

Попробуйте это с помощью подготовленных инструкций PDO, гораздо безопаснее, предотвратите SQL-инъекцию и т.д.

$sql = "INSERT INTO 
            users ( 
                 email, 
                 voornaam, 
                 achternaam, 
                 postcode, 
                 woonplaats
            ) VALUES (
                 ':email', 
                 ':voornaam', 
                 ':achternaam', 
                 ':postcode', 
                 ':woonplaats'
            )";

$params = array(
    ':email'   => $_POST['email'],
    ':voornam' => $_POST['voornaam']
    // etc
)
$statement = $conn->prepare($sql);
$result = $statement->execute($params);


В угловой попытке: (взято из Угловых Документов)

var params = { 
    voornaam: $scope.user.voornaam, 
    achternaam: $scope.user.achternaam, 
    email: $scope.user.email, 
    postcode: $scope.user.postcode, 
    woonplaats: $scope.user.woonplaats
}
$http
    .post("www.test.com/example.php", params)
    .then(function successCallback(response) {
        // this callback will be called asynchronously
        // when the response is available
        console.log("inserted Successfully")
    }, function errorCallback(response) {
        // called asynchronously if an error occurs
        // or server returns response with an error status.
    });
});
  • 0
    Здравствуйте, спасибо за ответ. Я изменил его, но теперь он продолжает говорить «Неопределенный индекс: (поместите все переменные здесь)». Я полагаю, это означает, что переменные даже не достигают документа?
  • 0
    @MartijnBos данные POST явно есть ... вы точно скопировали мой код, используя ': email' и т. Д.?
Показать ещё 2 комментария
0

попробуйте использовать serialzier для ваших данных, и я предпочитаю использовать $httpParamSerializerJQLike Не забудьте добавить его в зависимости от контроллера, и код должен быть

var data={ 
    voornaam: $scope.user.voornaam, 
    achternaam: $scope.user.achternaam, 
    email: $scope.user.email, 
    postcode: $scope.user.postcode, 
    woonplaats: $scope.user.woonplaats
}
$scope.request = $http({
url: "www.test.com/example.php",
method: "POST",
data: $httpParamSerializerJQLike(data),
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню