In your previous code, you were returning a result resource from the query() method, and later fetching from it, performing additional logic inside the fetch loop. Since execute() won't return an object that can be used that way, I would suggest instead performing the complete fetch operation inside the query() method then later working with a simple foreach loop to make use of the rowset. It is also possible to return $stmt; from the query() method, but that seems logically muddled.

From the code in context, it is hard to tell if you have configured PDO to throw exceptions on failure. I would advise doing so, since by default it will error silently when execute() or other methods fail. Where the PDO instance is created, set the appropriate attribute:

// Turn on PDO exceptions when the instance is first created
// That may not have been within this class, but difficult to
// tell from the limited code posted.
self::$instance->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);