0

я делаю систему сбора и просмотра статистики по сайту и мне нужно узнать id таблицы где url = $url:

$url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] .   $_SERVER['REQUEST_URI'];
$url = urldecode($url);
$id_r = "SELECT `id` FROM `page` WHERE `url` = $url";

После этого мне нужно вставить значение hit которое равно 1 в эту таблицу:

$id_r_res = mysqli_query($conn, $id_r);
$sql = "UPDATE `page` SET `hit` = `hit` + 1 WHERE `page`.`id` = '$id_r_res'";
$result = mysqli_query( $conn, $sql ) ;
if (mysqli_affected_rows($conn) != 1)
{ 
echo '<p>Ошибка</p>'.mysqli_error($conn);
}

Но почему-то БД выдаёт ошибку. Что делать? Вот полный код:

$url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$url = urldecode($url);
$id_r = "SELECT `id` FROM `page` WHERE `url` = $url";
$id_r_res = mysqli_query($conn, $id_r);
$sql = "UPDATE `page` SET `hit` = `hit` + 1 WHERE `page`.`id` = '$id_r_res'";
$result = mysqli_query( $conn, $sql ) ;
if (mysqli_affected_rows($conn) != 1)
{ 
echo '<p>Ошибка</p>'.mysqli_error($conn);
}

Помогите пожалуйста.

  • 2
    Ошибку мы должны угадать? В этом вопрос заключается? – ArchDemon Sep 25 '21 at 09:35
  • 2
    Я у вас не вижу в коде после первого mysqli_query получение результата запроса. – ArchDemon Sep 25 '21 at 09:36
  • 2
    И кроме того вы url просто подставляете в запрос, даже без кавычек, там наверняка происходит ошибка sql на этом. Но ошибки вы даже не пытаетесь отлавливать и выводить, что бы было понятно что происходит. (после update проверяете, а после select почему то нет) И кроме этого наличие разных недопустимых с точки зрения синтаксиса sql символов в url может приводить к ошибкам в любой момент, даже когда вам покажется что все уже работает как надо. Используйте подготавливаемые выражения и привязку переменных. https://www.php.net/manual/ru/mysqli-stmt.bind-param.php – Mike Sep 25 '21 at 10:48

0 Answers0