我正在尝试为体育赛事创建某种订阅。在这种情况下,我用gameId和userId创建了表。我正在尝试通过localStorage登录用户ID。 这是我的角度代码:
app.controller('customersCtrl', function($scope, $http) {
$http.get("php/contents.php")
.then(function (response) {
$scope.games = response.data.games;
});
/*$scope.subscribe = function(something){
// console.log(something);
console.log(localStorage.getItem('loggedUserInfo'));
};*/
$scope.subscribe = function (gameId,userId){
var data = {
userId: localStorage.getItem('loggedUserInfo'),
gameId: gameId
}
//console.log(data);
$http.post("php/subscribe.php", data).success(function(response){
console.log(response);
}).error(function(error){
console.error(error);
});
};
});
这是我的PHP代码:
<?php
include("../connection.php");
$data = json_decode(file_get_contents("php://input"));
$userId = $data->userId;
$gameId = $data->gameId;
$q = "INSERT INTO subscription (gameId, playerId) VALUES (:game, :user)";
$query = $db->prepare($q);
$execute = $query->execute(array(
":game" => $gameId,
":user" => $userId
));
echo json_encode($data);
?>
当我控制$ data时,我得到Object {userId:“↵1”,gameId:“2”},但是在数据库中只有gameId,userId总是= 0。
非常感谢您的帮助!
答案 0 :(得分:1)
localStorage
只存储字符串。
假设您在执行JSON.stringify()
时使用setItem()
,则需要执行相反的操作,使用JSON.parse()
将其从字符串转换为对象
尝试
var data = {
userId: JSON.parse(localStorage.getItem('loggedUserInfo')),
gameId: gameId
}
请注意,在传递请求之前,您还应确保密钥存在于localStorage中
或者在php中,如果你这样做:
$userId= json_decode($data->userId);
您还应该看到正确的数据库插入,但是在发布时混合数据类型似乎不一致,以后可能会在进行维护时混淆