HiveBrain v1.2.0
Get Started
← Back to all entries
patternMinor

Creating efficient PDO functions

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
creatingfunctionsefficientpdo

Problem

I have the following functions:

function getExample($id, $otherid) {
            global $db;
            $query = 'SELECT * FROM examples WHERE id = :id AND otherid= :otherid';
            try { 
                $statement = $db->prepare($query);
                $statement->bindValue(':id', $id);
                $statement->bindValue(':otherid', $otherid);
                $statement->execute();
                $result = $statement->fetchAll();
                $statement->closeCursor();
                return $result;
            } catch (PDOException $e) {
                $error_message = $e->getMessage();
                display_db_error($error_message);
            }
        }

 function getSecExample($id) {
            global $db;
            $query = 'SELECT * FROM examples WHERE id= :id';
            try { 
                $statement = $db->prepare($query);
                $statement->bindValue(':id', $id);
                $statement->execute();
                $result = $statement->fetchAll();
                $statement->closeCursor();
                return $result;
            } catch (PDOException $e) {
                $error_message = $e->getMessage();
                display_db_error($error_message);
            }
        }


Is there a way to make this one function instead of two? I want it to be secure and done with the best practices.

Solution

I'm not sure why you think that forcing this into one function will make it a "best practice," and that doesn't seem right anyways.

I suppose one way you could do it is:

WHERE id = :id AND otherid LIKE :otherid


If it were to be in the second function, :otherid would be a wildcard (%). Otherwise just have your value. Check out this.

Code Snippets

WHERE id = :id AND otherid LIKE :otherid

Context

StackExchange Code Review Q#80472, answer score: 2

Revisions (0)

No revisions yet.