2017-09-19 10 views
0

Je tente de créer une API pour renvoyer des données à partir de mySQL. C'est la première fois que j'utilise PDO.Le mappage des colonnes PDO ne fonctionne pas lorsque j'essaie de faire correspondre à l'objet

Si je fais ce qui suit, seul l'ID est mappé et rien d'autre. C'est la première fois que j'utilise ça, donc je ne sais pas où regarder. De plus, je n'ai jamais été capable de faire tourner ceci localement, donc ça fonctionne sur le site Live donc je ne peux pas penser à un moyen de le déboguer.

Les résultats de la requête ressemblent à ce

{ 
ID: "18", 
Name: null, 
Country: null 
} 
class cemetery{ 

    // database connection and table name 
    private $conn; 

    // object properties 
    public $id; 
    public $fldcemetery; 
    public $fldcountry;  

    public function __construct($db){ 
     $this->conn = $db; 
    } 

    public function readOne(){ 
     // query to read single record 
       $query = "select tblcemetery.id, tblcemetery.tblcountry_ID, tblcemetery.fldcemetery, tblcountry.fldcountry from tblcemetery 
       left join tblcountry on 
       tblcemetery.tblcountry_ID = tblcountry.ID 
       WHERE 
       id = ? 
       ORDER BY 
         fldcemetery 
       LIMIT 0,1"; 

     // prepare query statement 
     $stmt = $this->conn->prepare($query); 

     // bind id of product to be updated 
     $stmt->bindParam(1, $this->id); 

     // execute query 
     $stmt->execute(); 

     // get retrieved row 
     $row = $stmt->fetch(PDO::FETCH_ASSOC); 

     // set values to object properties 
     $this->fldcemetery = $row['fldcemetery']; 
     $this->fldcountry = $row['fldcountry'];  

    } 

} 
// get database connection 
$database = new Database(); 
$db = $database->getConnection(); 

// prepare cemetery object 
$cemetery = new cemetery($db); 

// set ID property of record to read 
$cemetery->id = isset($_GET['id']) ? $_GET['id'] : die(); 

// read the details of cemetery to be edited 
$cemetery->readOne(); 

// create array 
$cemetery_arr = array(
    "ID" => $cemetery->id, 
    "Name" => $cemetery->fldcemetery, 
    "Country" => $cemetery->fldcountry 
); 

// make it json format 
print_r(json_encode($cemetery_arr)); 
+1

Si vous exécutez la requête séparément (Délestage le? Un ID comme 18), vous obtenez des lignes arrière? –

+0

Oui, qui retourne les mêmes données '{ ID: "18", Nom: null, Pays: null }' –

+1

Juste pour clarifier, je parle d'exécuter la requête dans MySQL Workbench, phpMyAdmin etc. –

Répondre

0
WHERE id = ? 

aurait dû être

WHERE tblcemetery.id = ? 
0

Je pense que la clé de ces valeurs doit être $row['tblcemetery.fldcemetery']

Utilisation comme dans votre requête SQL pour modifier les clés le jeu de résultats.