2016-03-29 24 views
0

Veritabanına hiçbir değişken eklenmemiş. Uygulamamdan veritabanına değişkenler göndermek için çalışıyorum. Artık başarıyla bir bağlantı yapar, ama o veritabanına değişkenleri itmek değil (Bu yeni bir satır yapar, ama değişkenler boş.)Angular - PHP API

benim 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") 
}) 
göndeririz

Benim example.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; 

?> 

Ben example.php teslim değişkenleri nasıl işleyeceğini de bir hata var sanıyorum, ama emin değilim.

Şimdiden teşekkürler! :)

DÜZENLEME: açıklama için

Hata mesajı

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 

İKİNCİ DÜZENLEME:

print_r ($ _ POST)

Array ([{"voornaam":"Jogn","achternaam":"Doe","email":"[email protected]_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 ($ _ İSTEK)

Array ([{"voornaam":"Jogn","achternaam":"Doe","email":"[email protected]_com","postcode":"3252AR","woonplaats":"Zwolle"}] =>) 
+0

olmalıdır javascript’te = // hiçbir şey yok mu? –

+0

Yea, Üzgünüm, hala varirables değerlerini ayarlamaya çalışmaktan ve sonra göndermekten vazgeçmişti. Değişkenleri gönderdiğim kısmı göndermek yerine javascriptimde bir sorun olup olmadığını görmek için. Bunu temizlemiş olsaydı –

+0

var denediniz mi var_dump ($ _ POST) '; Orada ne olduğunu görmek için hiç? Ayrıca GET 'vb. Kontrol etmek için var_dump ($ _ REQUEST) 'i deneyin. –

cevap

0

PDO ile bu ifadeleri hazırlanan deneyin yerine, çok daha güvenli, SQL enjeksiyonunu engeller vb açısal try

$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); 


: (Angular Docs)

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

Merhaba, cevabınız için teşekkürler. Bunu değiştirdim, ama şimdi "Tanımsız dizin:" (tüm değişkenleri buraya yerleştirin) "diyerek devam ediyor." Bunun anlamı, değişkenlerin belgeye bile ulaşmadığı anlamına mı geliyor? –

+0

@MartijnBos POST verileri açık bir şekilde var ... kodumu tam olarak ': e-posta' vb. Kullanarak kopyaladınız mı? –

+0

Aldığınız asıl hatayı yayınla? –

0

verilerinize bir serialzier kullanmayı deneyin ve bağımlılıkları kontrol cihazına eklemeyi unutuyorum .Don't $httpParamSerializerJQLike kullanmayı tercih ve kod tüm `$ scope.voornaam ile neler oluyor

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' } 
});