Reputation: 141
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
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