[英]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."')");
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.