2017-05-31 8 views
0

Ich erstelle ein Formular in AngularJS, mit dem ich Personendaten in phpMyAdmin (mysql) speichern muss. Aber sobald ich den Submit-Button nach dem Ausfüllen des Formulars gedrückt habe, werden die Details nicht in der Datenbank hinzugefügt. Kann mir bitte jemand helfen, dieses Problem zu lösen.PHP Formulardetails sind nicht in Mysql gespeichert

HTML-Seite Code:

<!DOCTYPE html> 
<html> 
<script 
src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"> 
</script> 
<title> Home </title> 
<body> 

<div ng-app="myapp" ng-controller="myCtrl"> 
<form> 
<br> 
<h1 align="left">ID : <input type="text" ng-model="id"></h1> 
<h1 align="left">Name : <input type="text" ng-model="name"></h1> 

<h1 align="left">Address : <input type="text" ng-model="address"></h1> 

<h1 align="left">Phone : <input type="text" ng-model="phone"></h1> 

<input type="button" value="Submit" ng-click="insertData()" /> 
</br> 
</form> 

<script> 
var app = angular.module('myapp',[]); 
app.controller('myCtrl', function($scope, $http){ 

$scope.insertData = function(){ 
$http.post("insert.php",{ 
'id':$scope.id, 
'name':$scope.name, 
'address':$scope.address, 
'phone':$scope.phone}) 
.then(function successCallback(data,status,headers,config) { 
console.log(data); 
}); 
} 
}); 

PHP-Code: insert.php

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = "bulbul"; 
$dbname  = "angularjs"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 


$json = file_get_contents('php://input'); 
$php_array = json_decode($json, TRUE); 
$id = $php_array['id']; 
$name = $php_array['name']; 
$address = $php_array['address']; 
$phone = $php_array['phone']; 

$sql = "INSERT INTO employee(id,name,address,phone) VALUES(?,?,?,?)"; 
$stmt = $conn->prepare($sql); 
$stmt->bind_param("isss", $id, $name, $address, $phone); 
if ($stmt->execute()) { 

    echo "data inserted"; 
} 
?> 
+0

Haben Sie einen Fehler? – modsfabio

+0

nein kein Fehler Ich bekomme – BleedCode

+0

Versuchen Sie, mysql_error() 'zu drucken und den Fehler zu posten. Zusätzlich sollten Sie mysqli oder PDO verwenden, da mysql veraltet ist – modsfabio

Antwort

0

Warum werden die Formulardetails nicht in der Datenbank hinzugefügt? gut, weil die folgende Fehler haben:

$http.post(...).success is not a function

Nutzen Sie Ihre Browser-Konsole.

Das Problem ist .success $ http Erfolg und Fehler Methoden waren in älteren Versionen von Angular 1.x verfügbar, aber sie sind für eine Weile veraltet und in Angular 1.6 entfernt worden. siehe: https://docs.angularjs.org/api/ng/service/

Sie verwenden sollten .then()

Dies ist, was u brauchen

<!DOCTYPE html> 
<html> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"> 
</script> 
<title> Home </title> 
<body> 

<div ng-app="myapp" ng-controller="myCtrl"> 
<form> 
<br> 
<h1 align="left">ID : <input type="text" ng-model="id"></h1> 
<h1 align="left">Name : <input type="text" ng-model="name"></h1> 

<h1 align="left">Address : <input type="text" ng-model="address"></h1> 

<h1 align="left">Phone : <input type="text" ng-model="phone"></h1> 

<input type="button" value="Submit" ng-click="insertData()" /> 
</br> 
</form> 

<script> 
var app = angular.module('myapp',[]); 
app.controller('myCtrl', function($scope, $http){ 

    $scope.insertData = function(){ 
    $http.post("insert.php",{ 
    'id':$scope.id, 
    'name':$scope.name, 
    'address':$scope.address, 
    'phone':$scope.phone}) 
    .then(function successCallback(data,status,headers,config) { 
    console.log(data); 
    }); 
    } 
    }); 
    </script> 

    </div> 
    </body> 
    </html> 

Dann wird Ihr insert.php

Stopp abgeschrieben Funktionen und stoppen vorbereitete Anweisungen mit gefährlichen Code verwenden:

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname  = "angularjs"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 


$data = json_decode(file_get_contents("php://input")); 
$id = $data->id; 
$name = $data->name; 
$address = $data->address; 
$phone = $data->phone; 

$sql = "INSERT INTO employee(id,name,address,phone) VALUES(?,?,?,?)"; 
$stmt = $conn->prepare($sql); 
$stmt->bind_param("isss", $id, $name, $address, $phone); 
if ($stmt->execute()) { 

    echo "data inserted"; 
} 
?> 
+0

hey nach den Updates, was Sie gesagt haben ... Ich bekomme HINWEIS als: (!) Hinweis: Versuchen, Eigenschaft von Nicht-Objekt in C: \ wamp64 \ www \ HomeMade \ insert.php in Zeile 16. – BleedCode

+0

@BleedCode zeige mir welche Zeile ist 16? benutze meinen insert.php Code, da er nur die Server Credentials verändert –

+0

$ id = $ data-> id; <- Dies ist die Zeile, in der Fehler auftreten. Die gleichen Möglichkeiten, ich bekomme einen Fehler in $ name = $ data-> name; $ address = $ data-> Adresse; $ phone = $ data-> phone; – BleedCode

Verwandte Themen