pdo-wrapper icon indicating copy to clipboard operation
pdo-wrapper copied to clipboard

search function example code

Open mucahidbaris opened this issue 1 year ago • 2 comments

` /**

  • Search records with optional date range and additional parameters

  • @param string $table table name

  • @param array|null $date_range date range array with [start_date, end_date] keys (optional)

  • @param array $params additional parameters

  • @return array returns an array of records */ public function search($table, $date_range = null, $params = []) { $sql = "SELECT * FROM $table"; $queryParams = []; $dateConditionAdded = false;

    if ($date_range !== null && is_array($date_range) && count($date_range) >= 2) { $start_date = $date_range[0]; $end_date = $date_range[1];

     if ($start_date !== null && $end_date !== null) {
         $sql .= " WHERE date >= :start_date AND date <= :end_date";
         $queryParams[':start_date'] = $start_date;
         $queryParams[':end_date'] = $end_date;
         $dateConditionAdded = true;
     }
    

    }

    foreach ($params as $key => $value) { if ($value !== null) { if (!$dateConditionAdded) { if (empty($queryParams)) { $sql .= " WHERE $key = :$key"; } else { $sql .= " AND $key = :$key"; } } else { $sql .= " AND $key = :$key"; } $queryParams[":$key"] = $value; } }

    $stmt = $this->db->prepare($sql); $stmt->execute($queryParams); return $stmt->fetchAll(PDO::FETCH_ASSOC); } `

Errors may exist, but it serves my purpose. I would like to suggest adding the search function to the class. Thank you

mucahidbaris avatar Jun 26 '24 22:06 mucahidbaris