2013-01-24 3 views
0

Je crée un site qui affiche des articles. Le tableau de l'article a les champs suivants:Sélectionner une déclaration avec une mise à jour

article_id 
title 
text 
views 

ATM Je sélection de la l'article et la sortie du résultat, mais je voudrais aussi incrémenter les vues dans la même requête ie « vues = vues + 1 ».

La requête ressemblerait à ceci

SELECT article_id, title, text, views 
SET views=views+1 
WHERE article_id=:article_id 

Je veux obtenir le résultat incrémentée de vues aussi bien dans la sortie donc je suppose que je aurais besoin le lieu SET avant SELECT.

+0

Je pense que vous devrez utiliser 2 requêtes – Ibu

+0

Je suppose que vous ne pouvez pas faire cela en une seule requête. –

+0

en double de http://stackoverflow.com/questions/562693/mysql-update-and-select-in-one-pass? –

Répondre

1

Il devrait y avoir deux requêtes distinctes.

SELECT 
    article_id, 
    title, 
    text, 
    views 
FROM TABLE 
WHERE article_id = article_id; 

UPDATE TABLE 
SET views = views + 1 
WHERE article_id = article_id; 

Vous pouvez envelopper ces éléments dans une transaction pour forcer à la fois l'exécution ou l'annulation.

START TRANSACTION; 

SELECT 
    article_id, 
    title, 
    text, 
    views 
FROM TABLE 
WHERE article_id = article_id; 

UPDATE TABLE 
SET views = views + 1 
WHERE article_id = article_id; 

COMMIT; 
+0

Ok merci pour cela, tout était pas sûr. – Nuvolari

Questions connexes