使用angularjs获取数据并将数据插入到mysql中

时间:2016-04-27 17:49:55

标签: php mysql angularjs database

我无法使用angularjs& amp连接将日期插入sql server PHP。

我想知道如何在sql中插入数据并从db中获取数据。

<body>
    <div ng-app="myapp" ng-controller="empcontroller">
        <form>
            Employe No. <input type="text" ng-model="emp_no" /><br/>
            First Name. <input type="text" ng-model="first_name" /><br/>
            Last Name.  <input type="text" ng-model="last_name" /><br/>
            Department. <input type="text" ng-model="dept_name" /><br/>

            <input type="button" value="submit" ng-click="insertdata()"/> <br/>
        </form> 
    </div>


    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.3/angular-route.min.js"></script>    
    <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
    <script type="text/javascript">
        var app = angular.module('myapp',[]);
        app.controller('empcontroller', function($scope, $http){
            $scope.insertdata=function(){
                $http.post("insert.php",{'emp_no':$scope.emp_no,'first_name':$scope.first_name,'last_name':$scope.last_name,'dept_name':$scope.dept_name})
                    .success(function(data,status,headers,config){
                        console.log("data insert succesfully");
                    });
            }
        });
    </script>
</body>

PHP代码:

$data = json_decode(file_get_contents("php://input"));
$empno = mysql_real_escape_string($data->emp_no);
$fname = mysql_real_escape_string($data->first_name);
$lname = mysql_real_escape_string($data->last_name);
$dept = mysql_real_escape_string($data->dept_name);

$con = mysql_connect("localhost", "root", "root");
mysql_select_db("company", $con);
mysql_query("INSERT INTO employee('emp_no', 'first_name', 'last_name', 'dept_name')VALUES('".$empno."','".$fname."','".$lname."','".$dept."')");

3 个答案:

答案 0 :(得分:7)

你去试试这个

<强> HTML

<div ng-app="myapp" ng-controller="empcontroller">
        <form>
            Employe No. <input type="text" ng-model="emp_no" /><br/>
            First Name. <input type="text" ng-model="first_name" /><br/>
            Last Name.  <input type="text" ng-model="last_name" /><br/>
            Department. <input type="text" ng-model="dept_name" /><br/>

             <button ng-click="postData()">Submit</button><br>
        </form> 
    </div>

<强>控制器:

app.controller('empcontroller', function ($scope, $http) {
/*
* This method will be called on click event of button.
*/
$scope.postData = function () {

    var request = $http({
        method: "post",
        url: window.location.href + "insert.php",
        data: {
            emp_no: $scope.emp_no,
            first_name: $scope.first_name,
            last_name: $scope.last_name,
            dept_name: $scope.dept_name,
        },
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
    });

 }
}); 

PHP代码:

<?php

 $postdata = file_get_contents("php://input");
    $request = json_decode($postdata);
    $emp_no = $request->emp_no;
    $first_name = $request->first_name;
    $last_name = $request->last_name;
    $dept_name = $request->dept_name;


$servername = "localhost";
$username = "root";
$password = "root"; //Your User Password
$dbname = "myDB"; //Your Database Name


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

$sql = "INSERT INTO employee (emp_no, first_name, last_name, dept_name)
VALUES ($emp_no, $first_name, $last_name , $dept_name)";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

答案 1 :(得分:1)

您的代码有三个问题:

  1. 使用ng-click执行$scope函数时,最佳做法是在使用变量时传入变量。
  2. 由于您的PHP控制器需要JSON,您应该形成一个JSON对象并在标题中指明它。
  3. .success()已被弃用。您应该使用承诺.then()代替。
  4. <强> HTML:

    <!-- need to pass model in the ng-click function -->
    <input type="button" value="submit" ng-click="insertdata(emp_no, first_name, last_name, dept_name)"/>
    

    <强>控制器:

    $scope.insertata = function(empNo, firstName, lastName, deptName) {
        //make json payload object
        var payload = {
            emp_no: empNo,
            first_name: firstName,
            last_name: lastName,
            dept_name: deptName
        };
    
        //pass to API
        $http.post('insert.php', payload, {
            headers: {
                'Content-Type': 'application/json; charset=utf-8'
            }
        }).then(function(data, status, headers, config) {
            //success
        }, function(data, status, headers, config) {
            //an error occurred 
        });
    }
    

答案 2 :(得分:0)

好吧,现在使用KKKKKKKK的代码你需要一个PHP代码。

要从使用post发布到php的json文件中检索信息,您应该执行以下操作:

$json = file_get_contents('php://input'); 
$obj = json_decode($json); // this will retrieve the json.

现在可以根据需要进行操作。