在angularjs中将数据从前端插入到mysql db

Posted

技术标签:

【中文标题】在angularjs中将数据从前端插入到mysql db【英文标题】:Inserting data from front end to mysql db in angularjs 【发布时间】:2013-11-29 00:54:25 【问题描述】:

我正在尝试使用 angularjs 将数据从前端插入到 mysql db。 但即使没有错误消息,它也不会插入到数据库中。以下是我使用的代码。

index.html

<html ng-app="demoApp">
   <head>
        <title> AngularJS Sample</title>
        <script src="js/angular.min.js"></script>
        <script src="js/angular-route.min.js"></script>
        <script type="text/javascript" src="js/script.js"></script>
    </head>
    <body>
        <div class="container" ng-view>
        </div>
    </body>
</html>

script.js

    demoApp.config( function ($routeProvider,$locationProvider) 
    $routeProvider
        .when('/',
        
            controller: 'SimpleController',
            templateUrl: 'Partials/view1.html'
        )
        .when('/view2',
        
            controller: 'SimpleController',
            templateUrl: 'Partials/view2.html'
        )
        .otherwise(redirectTo: '/');
    );
    demoApp.controller('SimpleController',function ($scope,$http)
    $http.post('server/view.php').success(function(data)
        $scope.friends = data;
    );;
    $scope.addNewFriend = function(add)
        var data = 
            fname:$scope.newFriend.fname,
            lname:$scope.newFriend.lname
        
        $http.post("server/insert.php",data).success(function(data, status, headers, config)
            console.log("inserted Successfully");
        );
        $scope.friends.push(data);
        $scope.newFriend = 
            fname:"",
            lname:""
        ;
    ;   
);

View1.html

<div class="container" style="margin:0px 100px 0px 500px;">
    Name:<input type="text" ng-model="filter.name">
    <br/>
    <ul>
        <li ng-repeat="friend in friends | filter:filter.name | orderBy:'fname'">friend.fname friend.lname</li>
    </ul>
    <br/>
    <fieldset style="width:200px;">
        <legend>Add Friend</legend>
        <form name="addcustomer" method="POST">
            First Name:<input type="text" ng-model="newFriend.fname" name="firstname"/>
            <br/>
            Last Name :<input type="text" ng-model="newFriend.lname" name="lastname"/>
            <br/>
            <button data-ng-click="addNewFriend()" name="add">Add Friend</button>
        </form>
    </fieldset>
    <a href="#/view2" style="margin:auto;">Next</a>
</div>

下面是我的php文件

插入.php

<?php
    if(isset($_POST['add']))
    
        $firsname=$_POST['firstname'];
        $laname = $_POST['lastname'];
        mysql_connect("localhost", "root", "") or die(mysql_error()); 
        mysql_select_db("angularjs") or die(mysql_error()); 
        mysql_query("INSERT INTO friends (fname,lname) VALUES ('$firsname', '$laname')"); 
        Print "Your information has been successfully added to the database."; 
    
?> 

我知道我在这里做了一些愚蠢的事情。我今天刚开始学习angularjs。 当我尝试使用纯 html 插入 db 的 php 代码时,它工作得很好。我没有得到我在这里做错了什么。希望有人在这里帮助我

【问题讨论】:

如果 php 在没有角度的情况下工作,那么我们可以将其视为原因,但您应该使用 mysqli_* 或 PDO 而不是 mysql_* 函数。使用 Chrome 开发者工具或类似工具,你能看到 XHR 对你的脚本进行 POST 吗?它是否具有“添加”的价值?我看不到您在哪里设置帖子“添加”值,但我不熟悉 angular。更多关于为什么不使用 mysql_* 的信息可以找到here 您是否收到回调或至少一些请求代码的响应代码? 显然您没有发送 _POST["add"] 值,因此没有输入 if。 但是相同的代码在常规 php 中运行良好...@boodle 我没有收到回复...如果我是对的,我应该得到“您的信息已成功添加到数据库中。”作为回应。但是当使用 angularjs 完成时没有得到它。但我得到了常规 php @VinodLouis 的响应 【参考方案1】:

您插入数据的脚本有误。将其替换为以下内容

$http.post("server/insert.php",'fstname': $scope.newFriend.fname, 'lstname': $scope.newFriend.lname)
        .success(function(data, status, headers, config)
            console.log("inserted Successfully");
        );

并如下更改php。

$data = json_decode(file_get_contents("php://input"));
$fstname = mysql_real_escape_string($data->fstname);
$lstname = mysql_real_escape_string($data->lstname);
mysql_connect("localhost", "root", "") or die(mysql_error()); 
mysql_select_db("angularjs") or die(mysql_error()); 
mysql_query("INSERT INTO friends (fname,lname) VALUES ('$fstname', '$lstname')"); 
Print "Your information has been successfully added to the database."; 

当我尝试使用您的代码时,这对我有用。

【讨论】:

以上是关于在angularjs中将数据从前端插入到mysql db的主要内容,如果未能解决你的问题,请参考以下文章

如何在netbeans java中将图像插入mysql数据库

试图在php MYSQL中将数据从一个表插入另一个表[关闭]

在 jsp/servlet 中将调查数据插入 mySql 数据库

如何使用 PostgreSQL 将数据从 AngularJS 前端传递到 Nodejs 后端?

如何将数据从 AngularJS 前端传递到 Nodejs 后端?

Angular - 在 Zeppelin 中将动态表单内容插入数据库