К примеру в YII2, при открывании любой страницы вызывается метод (в действии контроллера).
// Открыли картинку, увеличь счетчик на 1
$model->updateCounters([
   'поле счетчика' => 1,
]);
В котором содержится
public function updateCounters($counters)
    {
        if (static::updateAllCounters($counters, $this->getOldPrimaryKey(true)) > 0) {
            foreach ($counters as $name => $value) {
                if (!isset($this->_attributes[$name])) {
                    $this->_attributes[$name] = $value;
                } else {
                    $this->_attributes[$name] += $value;
                }
                $this->_oldAttributes[$name] = $this->_attributes[$name];
            }
            return true;
        }
        return false;
    }
А на низком уровне, mysql запрос таков
UPDATE `таблица` SET `поле счетчика`=`поле счетчика`+1 WHERE `id фотографии`=9
На чистом php можно было бы написать так
$connection = new PDO($dsn,$user,$pass,$options);
$q = "UPDATE `таблица` SET `поле счетчика`=`поле счетчика`+1 WHERE `id` =`:photo_id`";
$query = $connection->prepare( $q); 
$query->bindValue( ':photo_id', $row["id"] );
$query->execute();
Может чем то поможет, успехов!