2017-07-26 10 views
1

データベースへのアクセスにMySQLiを使用するコードがあります。誰でも手助けできるPDOステートメントに変更したいのですか?私のコードがあります:方法:MySQLiからPDO

function select_data($user_id, $start_date, $end_date) 
{ 
    global $connection; 

    $sql = "SELECT * FROM attendancy 
     WHERE user_id = $user_id 
     AND date >= '$start_date' 
     AND date <= '$end_date'"; 

    $result = $connection->query($sql); 
    if(!is_object($result)) return array(); 

    $data = array(); 

    while($row = $result->fetch_assoc()) 
    { 
     $row['duration'] = count_work_hours($row); 
     $data[] = $row; 
    } 

    return $data; 
} 
+0

あなたがこれまでに試してみましたでしょうか? –

+0

パラメータ化された書式を使用するとmysqliも良いです – C2486

+0

私は持っていますが、うまく動作しません – pranatayudha

答えて

0
function select_data($user_id, $start_date, $end_date) 
{ 
    global $connection; 

    $sql = "SELECT * FROM attendancy 
     WHERE user_id = :user_id 
     AND date >= :start_date 
     AND date <= :end_date"; 

    $stmt = $connection->prepare($sql,[PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY]); 

    $stmt->execute([":user_id" => $user_id, ":start_date" => $start_date, ":end_date" => $end_date]); 

    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);   

    if(!count($results)){ 
     return array(); 
    } 
    else{ 

     $data = array(); 

     foreach($results as $row){ 

      $row['duration'] = count_work_hours($row); 
      $data[] = $row; 
     } 
    } 

    return $data; 
} 
+0

ありがとう、それは解決されました! @Eng Cy – pranatayudha

+0

いいえ、喜んで助けてください –

関連する問題