Не удается сохранить данные в SQL с помощью AngularJS и переполнения стека

У меня есть этот код, который сохраняет данные в SQL, используя AngularJS и PHP. Почему-то я не могу сохранить данные в моей базе данных. Код 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="https://web-answers.ru/wp-content/uploads/2019/02/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

Решение

Я должен быть честным здесь; Я ничего не знаю о angularjs или intel xdk, но я знаю PHP и MySQL и могу сказать следующее:

У вас нет элемента ввода, удерживающего submit атрибут имени, так что все внутри if(isset($_POST['submit'])){...} не выполнит

Поэтому вам нужно будет переименовать кнопку отправки из name="btn_upload" в name="submit"

Тогда для загрузки файлов требуется действительный энтип, такой как enctype="multipart/form-data",

Тогда вы используете mysqli_ синтаксис, но с использованием mysql_ функция, такая как mysql_real_escape_string() который не смешивается с mysqli_ API.

Это должно быть mysqli_real_escape_string() при передаче подключения к БД к нему в качестве первого параметра.

Пока неясно, какой API вы используете для соединения и что находится внутри require('db.php');,

Видя ваш запрос $query = $conn->prepare предлагает либо mysqli_ или PDO.

Вам нужно использовать тот же MySQL API от подключения к запросу.

Рекомендации:


Примечание:

Я не знаю, что делает эта функция ng-click="uploadfile()", если это способствует отказу вашего кода или нет, так как он не опубликован в вашем вопросе.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]