title: Caching PDO prepared statements
body: <p>Is there any point in saving PDO prepared statements for reuse in a session?</p>
  
  <p>I'm building a site that uses MySQL fulltext queries, which I'm putting together in my PHP, like</p>
  
  <pre><code>SELECT * FROM table 
  WHERE MATCH (title) AGAINST ($search_string IN BOOLEAN MODE) AND 
        MATCH (keywords) AGAINST ($keywords IN BOOLEAN MODE)
  ORDER BY $order_by $asc_desc
  </code></pre>
  
  <p>It seems to take a lot longer to run this kind of query when I prepare and execute it with bound parameters, than when I just prepare and execute a query string with the values included. But I need to use prepared statements to prevent the risk of SQL injection.</p>
  
  <p>In any session I would very likely run the same query several times, with different parameter values. Would it make sense for me to save the PDOStatement object once it's been created (for example in the session)? If so, what would be the best way to do that? Would it be good practice to save each prepared statement in an associative array as it's created, with the SQL query string as the key for each?</p>
  
  <hr>
  
  <p>On further reading I found you can't use bound params for the ORDER BY and ASC / DESC part of a statement. When I replace these with fixed values the performance improves.</p>