Написать хранимую процедуру:
delimiter //;
DROP PROCEDURE IF EXISTS ReadNews//;
CREATE PROCEDURE ReadNews(IN newsId INT)
BEGIN
SELECT * FROM news WHERE id=newsId LIMIT 1;
UPDATE news SET hit=hit+1 WHERE id=newsId;
END
Использование:
CALL ReadNews(2)
Обновление
Кстати, большинство клиентов mysql поддерживают несколько действий в одном операторе.
Обычно это используется (Pseude C # Code)
var result = DB.Execute("INSERT INTO table (id, name) VALUES (1, 'test'); SELECT LAST_INSERT_ID()");
, который будет выполнять вставку и возврат идентификатора вновь созданной записи.
Возможно, вы могли бы сделать
var result = mysql_query("UPDATE news SET hit=hit+1 WHERE id=2; SELECT * FROM news WHERE id = 2");