Задать вопрос

Код PHP работает, но правильно ли?

$re = mysql_query("SELECT * FROM post WHERE id=1",$db);
$a = mysql_fetch_array($re);
$c = $a['counter'];
$counter = $c + 1;
$s = "UPDATE post SET counter='$counter' WHERE id='1'";
mysql_query($s);
$ree = mysql_query("SELECT * FROM post WHERE id=1",$db);
$dd = mysql_fetch_array($ree);
echo $dd[counter];

Все отлично выводит, но правильно ли написан код?
  • Вопрос задан
  • 415 просмотров
Подписаться 4 Оценить Комментировать
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Хорошо что ты спросил.
Попробуем посчитать ошибки
  1. SQL инъекция (в реальном, а не игрушечном коде)
  2. пропуски в подсчетах. (пока ты в скрипте прибавлял, там уже двое прибавили, а ты обратно только +1 перезаписал)
  3. избыточный код.
  4. отсутствие информации об ошибках.
  5. Дублирование кода.

Попробуем решить эти проблемы.

$sql = "UPDATE post SET counter=counter+1 WHERE id=?";
$pdo->prepare->($sql)->execute([$id]);

$stm = $pdo->prepare("SELECT counter FROM post WHERE id=1");
$stm->execute([$id]);
echo $stm->fetchColumn()
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@vilgeforce
Раздолбай и программист
UPDATE posts SET counter = counter + 1 WHERE id=... - вроде, mysql так умеет. Нет кода под рукой где такое встречал :-(
Ответ написан
@retvizan
До кучи можно отмеить, что хранение счетчика в таблице постов не даст возможности использовать query_cache. Подробнее см статью Кэширование запросов в MySQL

Ну и холивар - PHP: критика перехода с оригинального API MySQL на...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы