Griff McGriff
Griff McGriff

Reputation: 141

Javascript to PHP PDO to MySQL Query returns empty

I am constructing an API with Javascript and for security reasons I switched my PHP database calls over to PDO.

Since doing so, I have had troubles with queries returning empty arrays (NOTE: not MySQL syntax errors). The latest example is this:

/*JAVASCRIPT*/
var getSampleEntity = function(params) {
//Returns Object
return $.ajax({ 
    url: URL + 'downloadQuadrat_Organism.php',
    type: 'POST',
    data: { 'organismID': params.oid, 'quadratID': params.qid },
    dataType: dataType
});
}

Header data sent from browser:

/*PACKAGE HEADER INFO*/
Request URL:http://..../downloadQuadrat_Organism.php
Request Method:POST
Status Code:200 OK
...
Form Data:
organismID:3

Which is sent to server...

/*PHP*/
//Init
$resultset = array();
$quadratID = $_POST['quadratID'];
$organismID = $_POST['organismID'];
$sql = 'SELECT * FROM Quadrat_Organism WHERE organismID = :organismID OR WHERE quadratID = :quadratID';

//Main
try{
    $db = connect();
    $stmt = $db->prepare($sql);
    $stmt->bindParam(':quadratID', $quadratID);
    $stmt->bindParam(':organismID', $organismID);
    $stmt->execute();

    while($row = $stmt->fetch(PDO::FETCH_ASSOC))
        $resultset[] = $row;

    //Return result in JSON
    $resultset = json_encode($resultset);
    print_r($resultset);

} catch(PDOException $e){
    print 'Error!: '.$e->getMessage().'<br/>';
}//End try catch

$db = null;

I expect an array of results in JSON (dummy-data in database should return 5 results), instead I receive [] (empty JSON array).

I believe the issue is at the PHP level, but I cannot identify the issue.

Upvotes: 1

Views: 2651

Answers (1)

jcho360
jcho360

Reputation: 3759

you have an error in your where Condition MySQL query:

Try this out, use this

$sql = 'SELECT * FROM Quadrat_Organism 
WHERE organismID = :organismID OR quadratID = :quadratID';

instead of:

$sql = 'SELECT * FROM Quadrat_Organism 
WHERE organismID = :organismID OR WHERE quadratID = :quadratID';

use only one where in your queries.

Upvotes: 4

Related Questions