No posting from web application to database

Using mysql database with PHP and AngularJs in a web application. The console doesn't throw any errors. I used ng-model

to double-bind desc

, pric

, cat

and title

to enter the tags to html. Here is my javascript:

 app.controller('MainController', ['$scope', '$http', function($scope, $http) { 

$scope.light = "Light";

var _userId = 44; 
$scope.desc = "" ; 
$scope.pric = "" ; 
$scope.cat =  ""; 
$scope.title =  "HERE I AM!"; 


$scope.sendPost = function() {
    var data = $.param({
        json: JSON.stringify({
            userId: _userId, 
            price: $scope.pric, 
            description: $scope.desc, 
            category: $scope.cat, 
            postTitle: $scope.title, 
            photo1: "", 
            photo2: "", 
            photo3: "", 
            tag1: "", 
            tag2: "", 
            tag3: ""
        })
    });
    $http.post("http://speffs.one/SPE/post.php", data).success(function(data, status) {
        window.alert("HIII I AM IN");
    });
}; 


}]);

      

Everything compiles / displays well, but it doesn't send anything to the database when I do a search from the database. Also, a successful warning "HI I AM IN" is issued.

Here is PHP:

<?php
//header('Access-Control-Allow-Origin: *');
//require_once 'https://filemanager.one.com/#aamirz@princeton.edu/speffs.one/files/SPE/connect.php';
$host = "";
$dbname = "";
$username = "";
$password = "";

// decode the json file
//$jsonInput = file_get_contents('http://speffs.one/SPE/test.txt');
$jsonInput = file_get_contents("php://input");
//$string = json_decode($jsonInput); 
//$file = fopen("testing.txt", "w");

//$myfile = fopen("testfile.txt", "w"); 
//var_dump($_POST);

// $jsonInput = '{"user":"","price":"22.00","description":"dks","category":"ksks","photo1":"","photo2":"","photo3":"","tag1":"ks","tag2":"sksk","tag3":"skdkj","postTitle":"Testy "}';
//$string = "HIIIII!"; 
if(isset($jsonInput)) {
    $JSON = json_decode($jsonInput, true);
    //fwrite($myfile, $string); 
}else{
    $this->error = 'A valid JSON file was not specified';
} 

// make a connection
try {
    $conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // $conn->(PDO::ATTR_EMULATE_PREPARES, false);

$sql = 'INSERT INTO Posts(userId,price,description,category,photo1,photo2,photo3,tag1,tag2,tag3,postTitle) 
 VALUES(:user,:price,:des,:cat,:p1,:p2,:p3,:t1,:t2,:t3,:title)';

// prepare the statement 
$stmt = $conn->prepare($sql);

$time = date("Y-m-d h:i:s");

$stmt->bindParam(':cat', $JSON["category"], PDO::PARAM_STR);
$stmt->bindParam(':des', $JSON["description"], PDO::PARAM_STR);
$stmt->bindParam(':title', $JSON["postTitle"], PDO::PARAM_STR);
$stmt->bindParam(':price', $JSON["price"], PDO::PARAM_STR); // check the param of this
$stmt->bindParam(':user', $JSON["userId"], PDO::PARAM_STR); // or get from the system, $user = 'system';

$empty = ''; 

if ($JSON["photo1"] != null) {
$stmt->bindParam(':p1', $JSON["photo1"], PDO::PARAM_LOB);
} else {
    $stmt->bindParam(':p1', $empty, PDO::PARAM_LOB);
}

if ($JSON["photo2"] != null) {
$stmt->bindParam(':p2', $JSON["photo2"], PDO::PARAM_LOB);
} else {
    $stmt->bindParam(':p2', $empty, PDO::PARAM_LOB);
}

if ($JSON["photo3"] != null) {
$stmt->bindParam(':p3', $JSON["photo3"], PDO::PARAM_LOB);
} else {
    $stmt->bindParam(':p3', $empty, PDO::PARAM_LOB);
}

if ($JSON["tag1"] != null) {
$stmt->bindParam(':t1', $JSON["tag1"], PDO::PARAM_LOB);
} else {
    $stmt->bindParam(':t1', $empty, PDO::PARAM_LOB);
}

if ($JSON["tag2"] != null) {
$stmt->bindParam(':t2', $JSON["tag2"], PDO::PARAM_LOB);
} else {
    $stmt->bindParam(':t3', $empty, PDO::PARAM_LOB);
}

if ($JSON["tag3"] != null) {
$stmt->bindParam(':t3', $JSON["tag3"], PDO::PARAM_LOB);
} else {
    $stmt->bindParam(':t3', $empty, PDO::PARAM_LOB);
}

// $stmt->bindParam(':tim', $time, PDO::PARAM_STR);     time was deleted, that in mysql auto  

$stmt->execute() ;
$stmt->close();
$conn->close();
} catch (PDOException $pe) {
    die("Could not connect to the database $dbname :" . $pe->getMessage());

}

?>

      

We used PHP from Android platform with JSON and it worked, it just doesn't work for our web app with angular. Help! Thank! <3

+3


source to share


2 answers


One of the problems in your code is that you are trying to close a PDO connection using the close () function and this is not valid. Instead, you must set the $ conn variable to null. See This message: Closing a PDO Connection .

You can see errors in php code by adding this to your post request:

$http.post("http://speffs.one/SPE/post.php", $scope.data).success(function(data, status) {
    console.log("Data: "+data+" Status: "+status);
    window.alert("HIII I AM IN");
});

      



Then it will print errors to the console of your web browser. When running your code, I get this error: Fatal error : Calling undefined method PDOStatement :: close () in ...

When I changed the use of the close () function to set the PDO connection to zero, your code works for me (I used simple dummy data though), the data from the frontend is hosted in the database. Try adding "console.log" to the post request function and see if you have any errors that might give you a hint as to what the problem is.

+1


source


Without knowing any error or exception messages, I suspect you are running into CORS issues, have you listed the title Access-Control-Allow-Origin

at http://speffs.one/SPE/post.php ?

Also, you shouldn't be using CORS preview for POST / PUT / DELETE



See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests

When using cURL or any other HTTP library, you don't need CORS, but if you are making requests from the browser, you will!

+1


source







All Articles