我有这个代码,使用angularJS和PHP将数据保存到sql。不知何故,我无法将数据保存到我的数据库。 angularJS代码似乎是正确的,它表示它已成功保存,但当我检查我的数据库时,它什么都没有。所以我猜我在我的PHP中有错误的代码。我已经完成了这个,但我找不到解决方案。顺便说一下我使用的是intel xdk。这是我的代码。
IntelXDK
<body ng-app="kelvinApp">
<div class="upage vertical-col left" id="mainpage">
<form name="fileupload" id="fileupload" ng-controller="mainController">
<div class="widget uib_w_1 scale-image d-margins" data-uib="media/img" data-ver="0">
<figure class="figure-align">
<img src="images/Checkmark.png" id="img_display">
<figcaption data-position="bottom"></figcaption>
</figure>
</div>
<div class="widget uib_w_2 d-margins" data-uib="media/file_input" data-ver="0">
<input type="file" accept="image/jpeg, image/png, image/gif" id="img_path" name="img_path" ng-model="image_path">
</div>
<label class="item item-input widget uib_w_3 d-margins" data-uib="ionic/input" data-ver="0" id="image_id"><span class="input-label">ID:</span>
<input type="text" name="image_id" ng-model="image_id">
</label>
<label class="item item-input widget uib_w_4 d-margins" data-uib="ionic/input" data-ver="0" id="image_name"><span class="input-label">Image Name:</span>
<input type="text" name="image_name" ng-model="image_name">
</label>
<label class="item item-input widget uib_w_5 d-margins" data-uib="ionic/input" data-ver="0" id="image_title"><span class="input-label">Image Title:</span>
<input type="text" name="image_title" ng-model="image_title">
</label>
<button class="button widget uib_w_7 d-margins" data-uib="ionic/button" data-ver="0" id="btn_upload" name="btn_upload" ng-click="uploadfile()">Upload</button>
</form>
</div>
</body>
</html>
app.js(angularJS)
var app = angular.module('kelvinApp', ['ionic']);
app.controller('mainController', function($scope, $http){
$scope.uploadfile = function() {
$http.post('http://localhost/Project/addfile.php',
{
'image_path' : $scope.image_path,
'image_name' : $scope.image_name,
'image_title' : $scope.image_title
})
.success(function(data, status, headers, config) {
alert("Success!");
})
.error(function(data, status, headers, config) {
alert("Sorry, Try Again!");
})
}
});
这是我的PHP代码,我猜这是我错的地方。数据没有保存到数据库。
<?php
require('db.php');
if(isset($_POST['submit'])){
global $conn;
$data = json_decode(file_get_contents("php://input"));
$image_path = mysql_real_escape_string($data->image_path);
$image_name = mysql_real_escape_string($data->image_name);
$image_title = mysql_real_escape_string($data->image_title);
print_r($data);
$query = $conn->prepare("INSERT INTO projectsql.tbl_imgstorage(image_name, image_title, image_path) VALUES(?,?,?)");
console.log("2");
$result = $query->execute(array($image_name, $image_title, image_path));
if($result){
$array = array('msg' => "Added Successfully", 'error' => '');
$json= json_encode($array);
print_r($json);
} else {
$array = array('msg' => "", 'error' => 'Error in inserting record');
$json = json_encode($array);
print_r($json);
}
}
?>
答案 0 :(得分:0)
我必须在此诚实;我对angularjs或intel xdk一无所知,但我确实知道PHP和MySQL,可以这样说:
您没有包含submit
名称属性的输入元素,因此if(isset($_POST['submit'])){...}
内的所有内容都不会执行。
因此,您需要将提交按钮从name="btn_upload"
重命名为name="submit"
然后上传文件需要有效的enctype,例如enctype="multipart/form-data"
。
然后您使用mysqli_
语法,但使用的mysql_
函数(例如mysql_real_escape_string()
不会与mysqli_
API混合使用。
将DB连接作为第一个参数传递给它时需要mysqli_real_escape_string()
。
目前还不清楚您使用的是哪种API以及require('db.php');
内的内容。
查看您的查询$query = $conn->prepare
建议使用mysqli_
或PDO。
您需要在连接到查询时使用相同的MySQL API。
参考文献:
旁注:
我不知道这个函数的作用ng-click="uploadfile()"
,如果它导致代码失败,因为它没有在你的问题中发布。