无法使用AngularJS和PHP在SQL中保存数据

时间:2015-10-29 01:56:00

标签: php angularjs intel-xdk

我有这个代码,使用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);
}

}
?>

1 个答案:

答案 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()",如果它导致代码失败,因为它没有在你的问题中发布。