简体   繁体   English

使用AngularJS将数据插入数据库

[英]Insert Data Into Database Using AngularJS

I'm currently developing an AngularJS project, which has a form and on form submit the form data is pushed to a sql database. 我目前正在开发一个AngularJS项目,该项目具有一个表单,并在表单提交时将表单数据推送到sql数据库。

I have successfully managed to get the AngularJS project connecting to the sql database, but the data from the form is not inserting itself into the table columns and instead is displaying empty - please see attached for a visual explanation. 我已经成功地使AngularJS项目连接到sql数据库,但是来自表单的数据并未将自身插入表列中,而是显示为空-请参见附件以获取直观说明。

Question, why is my data not inserting into the sql and how do I correct my code to get this working? 问题,为什么我的数据没有插入到sql中?如何更正我的代码才能使它正常工作?

Any and all advice would be appreciated, thank you. 任何和所有建议,将不胜感激,谢谢。

AngularJS AngularJS

$scope.submit = function() {
  console.log($scope.form);
  $http.post('XXX/submit.php', {'id':'3','coachName':'1','contractArea':'2','attendance':'4'})
  .success(function(data,status,headers,config){
    console.log('Success');
  });
};

PHP 的PHP

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

  $coachName = mysql_real_escape_string($data->coachName);
  $contractArea = mysql_real_escape_string($data->contractArea);
  $id = mysql_real_escape_string($data->id);
  $attendance = mysql_real_escape_string($data->attendance);

  mysql_connect('XXX','XXX','XX');
  mysql_select_db('XX');
  mysql_query("INSERT INTO participants(`id`, `coachName`, `contractArea`, `attendance`)VALUES('".$id."','".$coachName."','".$contractArea."','".$attendance."')");

SQL 的SQL 在此处输入图片说明

在此处输入图片说明

PHP, Update 1 PHP,更新1

  $servername = "XXX";
  $username = "XXX";
  $password = "XXX";
  $dbname = "XXX";

  $conn = new mysqli($servername, $username, $password, $dbname);

  if ($conn->connect_error) {
      die("Connection failed: " . $conn->connect_error);
  }

  $stmt = $conn->prepare("INSERT INTO participants (id,coachName, contractArea, attendance) VALUES (?, ?, ?, ?)");
  $stmt->bind_param("ssss", $iddb, $coachName, $contractArea, $attendance);

  $id = "1";
  $coachName = "2";
  $contractArea = "3";
  $attendance = "4";
  $stmt->execute();

  echo "Success";

  $stmt->close();
  $conn->close();

AngularJS, Update 2 AngularJS,更新2

  var variableName = {id:'1', coachName:'AA', contractArea:'BB', attendance:'CC'};
  $http({
    method: 'POST',
    url: "xxx/submit.php",
    data:  variableName,
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
  }).then(function(){
    console.log('Success');
  },function(){
    console.log('Error');
  });

PHP, Update 2 PHP,更新2

$servername = 'xxx';
$username = 'xxx';
$password = 'xxx';
$dbname = 'xxx';

$conn = new Mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
  mail( "xxx@xxx.com", "DB connect error", $db->connect_errno . ": " . $db->connect_error );
}

$id = '1';
$coachName = $_POST['coachName'];
$contractArea = $_POST['contractArea'];
$attendance = $_POST['attendance'];

$stmt = $conn->prepare('INSERT INTO participants (id, coachName, contractArea, attendance) VALUE(?, ?, ?, ?)' );
$stmt->bind_param('ssss', $id, $coachName, $contractArea, $attendance);

$stmt->execute();

echo 'Success';

$stmt->close();


$conn->close();

I was also using AngularJS and PHP in one of my project and faced the same problem, then I came across something like this. 我也在我的一个项目中使用了AngularJS和PHP,遇到了同样的问题,然后遇到了类似的问题。 try to add headers parameter in your request. 尝试在您的请求中添加headers参数。 May be this will help you. 可能会对您有帮助。

var variableName = {'id':'3','coachName':'1','contractArea':'2','attendance':'4'})
$http({
        method : 'POST',
        url : "XXX/submit.php",
        data   :  variableName,
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
        }).then(function(){
               console.log('Success');
           },function(){
               console.log('Error');
        });

I am just trying if it doesn't solve your problem please let me know. 我只是在尝试如果不能解决您的问题,请告诉我。

It took a couple hours, a lot of post reading and support from the Stack community, but I've finally figured it out. 花了几个小时,获得了Stack社区的大量帖子阅读和支持,但我终于弄明白了。

This is what I ended up with: 我最终得到的是:

AngularJS AngularJS

/* Submit */
$scope.submit = function() {
  var request = $http({
    method: "post",
    url: 'xxx/submit.php',
    data: {
      id: '1',
      coachName: 'B',
      contractArea: '2',
      attendance: 'C',
    },
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
  });
};

PHP 的PHP

<?php

  $postdata = file_get_contents("php://input");
  $request = json_decode($postdata);
  $id = $request->id;
  $coachName = $request->coachName;
  $contractArea = $request->contractArea;
  $attendance = $request->attendance;

  $servername = 'xxx';
  $username = 'xxx';
  $password = 'xxx';
  $dbname = 'xxx';

  $conn = new Mysqli($servername, $username, $password, $dbname);

  if ($conn->connect_error) {
    mail( "adamwadsworth@xxx.com", "DB connect error", $db->connect_errno . ": " . $db->connect_error );
  }
  $stmt = $conn->prepare('INSERT INTO participants (id, coachName, contractArea, attendance) VALUES (?, ?, ?, ?)' );
  $stmt->bind_param('ssss', $id, $coachName, $contractArea, $attendance);

  $stmt->execute();

  echo 'Success';

  $stmt->close();

  $conn->close();

?>

SUCCESS 成功
在此处输入图片说明

Updated answer 更新的答案

Angular : 角度

$scope.submit = function () {
    $http.post('test.php', {'id':'3','coachName':'1','contractArea':'2','attendance':'4'})
        .success(function(data,status,headers,config){
            if(!data.success)
                 alert(data.message)
            console.log(data);
        });
}

PHP 的PHP

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    header('Content-Type:application/json');

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

    $servername = 'xxx';
    $username = 'xxx';
    $password = 'xxx';
    $dbname = 'xxx';

    try {
    $dbh = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

    $sql = 'INSERT INTO participants (id,coachName, contractArea, attendance) VALUES (?, ?, ?, ?)';
                $sth = $dbh->prepare($sql);

    try {

        $dbh->beginTransaction();

        $sth->execute(array(
                        $data->id,//if id is string replace $data->id to '".$data->id."'
                        '".$data->coachName."',
                        '".$data->contractArea."',
                        '".$data->attendance."'
                    ));

        $dbh->commit();

        echo json_encode(['success'=> true,'data'=>$sth->fetch(PDO::FETCH_ASSOC)]);

    } catch(PDOExecption $e) {
        $dbh->rollback();
        echo json_encode(['success'=>false,'message'=>$e->getMessage()]);
    }
} catch( PDOExecption $e ) {
    echo json_encode(['success'=>false,'message'=>$e->getMessage()]);
}

It should work 它应该工作

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM