繁体   English   中英

使用AngularJS将数据插入数据库

[英]Insert Data Into Database Using AngularJS

我目前正在开发一个AngularJS项目,该项目具有一个表单,并在表单提交时将表单数据推送到sql数据库。

我已经成功地使AngularJS项目连接到sql数据库,但是来自表单的数据并未将自身插入表列中,而是显示为空-请参见附件以获取直观说明。

问题,为什么我的数据没有插入到sql中?如何更正我的代码才能使它正常工作?

任何和所有建议,将不胜感激,谢谢。

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

  $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 在此处输入图片说明

在此处输入图片说明

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,更新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,更新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();

我也在我的一个项目中使用了AngularJS和PHP,遇到了同样的问题,然后遇到了类似的问题。 尝试在您的请求中添加headers参数。 可能会对您有帮助。

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');
        });

我只是在尝试如果不能解决您的问题,请告诉我。

花了几个小时,获得了Stack社区的大量帖子阅读和支持,但我终于弄明白了。

我最终得到的是:

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

  $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();

?>

成功
在此处输入图片说明

更新的答案

角度

$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

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()]);
}

它应该工作

暂无
暂无

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

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