2016-10-12 5 views
-1
$app->get('/view/appointment/:databaseID/:userID/:appointmentID', function($databaseID, $userID, $appointmentID) use($app) { 

    $params['databaseID'] = $databaseID; //$request->getAttribute('databaseID'); 
    $id = $userID; //$request->getAttribute('userID');  
    $date = $appointmentID; //$request->getAttribute('appointmentID'); 

    $sql = "SELECT imapt_date, imapt_start_time, imapt_end_time, imapt_patient_id, imapt_procedure 
     from im_ap_timetable inner join im_practioner on 
     im_ap_timetable.impract_id=im_practioner.impract_id inner join 
     im_users_cd on im_practioner.user_id=im_users_cd.user_id 
     where im_users_cd.user_id = :id and im_ap_timetable.imapt_date = :date"; 

    try { 
     $db = getDB($params['databaseID']); 
     $stmt = $db->prepare($sql); 
     $query = compact('id'); 
     $stmt->execute($query); 

     $patient = $stmt->fetchAll(PDO::FETCH_ASSOC); 
     $status = array('success' => '200'); 

     echo json_encode(compact('patient','status')); 

    } catch (Exception $e) { 

     $status = array('error' => $e->getMessage()); 

     echo json_encode(compact('status')); 

    } 

}); 
+0

...あなたの質問は? –

+0

私は郵便配達員の/ view/appointment/clientDemo/25/2016-01-14をテストしていました。しかし、{"status":{"error": "SQLSTATE [HY093]:無効なパラメータ番号:バインドされた変数の数がトークンの数と一致しません"}}。正しいシステムでは、私が望む値のリストをjson形式で返信する必要があります – hanizar

答えて

0

あなたがパラメータをバインドするbindParam方法を使用することができますあなたのSQLクエリ

http://php.net/manual/en/pdostatement.bindparam.php

また、あなたのexecute方法内の配列にそれらを渡すことができます。 :id:date

$stmt->execute($query, [':id' => $id, ':date' => $date]);

1

あなたは、2つのプレースホルダを持っています。

ただし、バインドするのは1つだけです - :id

:dateもバインドする必要があります。あなたの場合は:

+0

ありがとうございます。私はまだこの新しい – hanizar

関連する問題