结合角度js和php - 将数据插入数据库失败

时间:2016-02-28 21:12:37

标签: php mysql angularjs

自从我开始学习角度js以来已经有两天了。 实际上很有趣。我还在使用静态数据。

当你无法操纵数据库仪式时,这意味着什么? 所以我跳进下一步。将它与我的数据库连接。即时通讯使用常规PHP。 如果成功,我将跳到下一步,结合角度和php框架,如laravel或codeigniter。

实际上,它的退出很容易从数据库中检索数据。

但是,我在这里不分享这个故事,我在尝试将其输入数据库时​​遇到了困难。我不明白为什么。关键是我无法从html中获取表单中的数据。我在角度使用工厂。

这是我的add.html:

<h1>add newdata</h1>
new name :
<input type='text' ng-model='newdata.name'> <br>
new city :
<input type='text' ng-model='newdata.city'> <br>

<button ng-click='addData()'>submit</button>

这是我的index.html:

//define dependency ngRoute module
var test = angular.module('testPeople', ['ngRoute']);

test.factory('factoryPeople', function($http) {
    var factoryPeople= {};

    factoryPeople.getPeople = function() {
        return $http.get('data.php');
    };

    factoryPeople.addPeople = function() {
        return $http.post('add.php');
    };

    return factoryPeople;
});

路线:

test.config(function($routeProvider) {

    $routeProvider
    .when('/add', {
        templateUrl : 'add.html',
        controller : 'add'
    })

    .when('/contact', {
        templateUrl : 'contact.html'
    })

    .when('/second', {
        templateUrl : 'index2.html'
    })

    .otherwise({redirectTo: '/'});

});

控制器:

test.controller('add', function($scope, $http, factoryPeople){
    $scope.tambahData = function() {

    //bikin format file json, dari hasil tangkapan form di file add.html
    databaru = {
        name: $scope.newdata.name,
        city: $scope.newdata.city
    }   

    factoryPeople.addPeople(newdata).success(function(result) {
        //update data using push method
        $scope.listofname.push({
            name: $scope.newdata.name,
            city: $scope.newdata.city
        });

        //set form data empty again
        $scope.newdata.name= '';
        $scope.newdata.city = '';

        alert(result);

    });

这是我的add.php:

<?php
header("Access-Control-Allow-Origin: *");
$host = "localhost";
$user = "root";
$pass = "";
$db = "angular";

$link = mysqli_connect($host, $user, $pass, $db) or die(mysqli_error($link));

// get input data
$data = json_decode(file_get_contents("php://input"));

// take value from array
$name= $data['name'];
$city= $data['city'];

// query insert
$sql = "insert into users (name , city) values ('$name', '$city') ";

// echo message
if(mysqli_query($link, $sql)):
    echo"input success| name: $name| city: $city";
else: echo"input failed| name : $name | city: $city";
endif;


?>

如果我运行该脚本,数据将始终成功插入数据库。 但问题是$ name和$ city没有价值。

我不明白为什么。 我错了使用php_get_contents还是什么? 你能告诉我我该怎么办才能获得更好的结果吗?

希望你们能帮帮我。

非常感谢。

1 个答案:

答案 0 :(得分:0)

您忘记传递参数。更改工厂(addPeople()功能):

factoryPeople.addPeople = function(data) {
    return $http.post('add.php', data);
};

然后在服务器上使用$_POST,就像你通常(我猜)那样做