views:

115

answers:

1

How can you put an array to the WHERE -clause below without creating 50 pg_execute -commands in PHP / PostgreSQL?

     // to get the question_ids of the newest questions
     $result_q_id = pg_prepare($dbconn, "query6", "SELECT question_id 
         FROM questions
         ORDER BY was_sent_at_time 
         DESC LIMIT 50;"
     ); 
     $result_question_id = pg_execute($dbconn, "query6", array());

     // to get all question ids
     $question_ids = pg_fetch_all($result_question_id);                             

     // to get titles, question_id from the db by using the question ids
     $result = pg_prepare($dbconn, "query8", "SELECT title 
         FROM questions
         WHERE question_id = $1            // Problem here! How to get many WHERE's?
         ORDER BY was_sent_at_time 
         DESC LIMIT 50;"
     );                                                                                                                     
     $result = pg_execute($dbconn, "query8", array($question_ids));
            // Problem here, since it is an array

I get the following error for the line where I have the text Problem here first time.

Warning: pg_execute() [function.pg-execute]: Query failed: ERROR: invalid input syntax for integer: "Array" in /var/www/codes/handlers/handle_questions_by_time.php on line 22
Call Stack
+3  A: 

subquery solves all of this...

     $result = pg_prepare($dbconn, "query8", 
"SELECT title          
FROM questions         
WHERE question_id in (SELECT question_id 
           FROM questions 
           ORDER BY was_sent_at_time  
           DESC LIMIT 50)                  
ORDER BY was_sent_at_time          
DESC LIMIT 50;"
Tim Hoolihan
thanks for the format fix :)
Tim Hoolihan
Thank you very much! - I had forgotten completely this nice trick.
Masi