PDO (MySQL) connection and query class, safety and logic
1) When using PDO, you want to get the benefits of automatic parameter escaping. 
By wrapping your PDO class you are limiting it's functionality. Check out this question for a better example:

https://stackoverflow.com/questions/6366661/php-pdo-parameterised-query-for-mysql

2) Every time you run a query you are making a new PDO instance. It might be better to have an application resource pool that you can call to get a preconfigured db handle. 

3) You wrote some sql to be able to fetch a stock by ID, that should probably be functionality that is reusable.

combining 1 &amp; 2 &amp; 3 .. code would probably look better as something like this:

class ApplicationResourcePool 
{
    static var $_dbHandle;

    private static $_dbConfig = array(
        'dsn'      =&gt; '',
        'username' =&gt; '',
        'password' =&gt; '',

    );
    public static getDbHandle(){
        if(self::$_dbHandle == null){
            self::$_dbHandle = new PDO(
                self::$_dbConfig['dsn'] , 
                self::$_dbConfig['username'], 
                self::$_dbConfig['password'] 
            );
        }
        return self::$_dbHandle;
    }

}

class StockMapper
{
    protected $_dbh; 
    public __construct($dbh = null)
    {
        if($dbh == null){
            $this-&gt;_dbh = ApplicationResourcePool::getDbHandle();
        } else {
            $this-&gt;_dbh = $dbh;
        }

    }
    public getStockById($stockId){

        $sth=$this-&gt;_dbh-&gt;prepare("SELECT * from stock WHERE id = :stockId"); 
        $sth-&gt;bindParam(":stockId", $stockId);
        $sth-&gt;execute();
        $result = $sth-&gt;fetch(PDO::FETCH_ASSOC);
        return $result[0];
    }
}


your codeBlock then becomes:

$stockMapper = new StockMapper();
$stockData = $stockMapper-&gt;getStockById('302');