2009-09-03 3 views
0

Je sens un moyen plus facile de faire le code. Comment puis-je faire la suppression/insertion plus courte?Postgres: insertion et suppression

// to delete the old tags before inserting new tags                                      
     $result = pg_query_params ($dbconn, 
       'DELETE FROM tags 
       WHERE question_id = $1', 
       array ($question_id) 
       ); 

     $result = pg_prepare ($dbconn, "query_777", 
       'INSERT INTO tags 
       (tag, question_id) 
       VALUES ($1, $2)' 
       ); 
+1

Votre 2ème requête ne contient pas les paramètres. –

Répondre

1

Pas beaucoup que vous pouvez faire. Techniquement, vous pouvez le faire avec la procédure stockée, puis juste:

select change_question_tags(...); 

Mais cela ne change pas beaucoup.

+0

Trop compliqué à utiliser? http://www.eioba.com/a70583/a_basic_introduction_to_postgres_stored_procedures – hhh

+0

Non. Les procédures stockées sont simples. Mais cela ne change pas la complexité du code - cela change juste le lieu où la complexité est. Bien sûr - cela a aussi de bons côtés, mais vous vouliez le raccourcir - l'utilisation d'une procédure stockée raccourcira votre code PHP, mais pas la longueur totale du code, y compris les procédures stockées dans la base de données. –

0

Vous pouvez utiliser un ORM/DB abstraction, puis faire des choses comme

$tags = new TagsTable(); 
$tags->delete($tags->find('question_id = ?', $1)); 
$tags->insert(array('tag' => $1, 'question_id' => $2)); 

Zend_Db_Table