К примеру в 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();
Может чем то поможет, успехов!