$_SERVER['REQUEST_URI'] - возвращает строку '/electricity'. При помощи substr удаляю слэш и получаю electricity. При отправке запроса оно не может найти таблицу с таким названием. Хотя, когда я на прямую вставляю в запрос название таблицы 'electricity' он норм. отрабатывает. В чем может быть проблема?
require '../database/db.php';
$table = substr(1,$_SERVER['REQUEST_URI']);
$prev = htmlspecialchars($_POST['prev']);
$curr = htmlspecialchars($_POST['curr']);
$sum = htmlspecialchars($_POST['sum']);
$query = Data_Base::query("INSERT INTO `{$table}`(`previous_record`,`current_record`,`sum`) VALUES ({$prev},{$curr},{$sum})");
string substr ( string $string , int $start [, int $length ] )
У вас ошибка в параметрах. Поменяйте местами 1 и $_SERVER['REQUEST_URI']
Остерегайтесь подстановки непроверенных параметров от пользователя в запрос базы данных. Обратившись на адрес:
http://site.ru/table VALUES (1,2,3)`;DROP DATABASE `name`;INSERT INTO
В данном случае, злоумышленник получит возможность удалить вашу базу данных если имеется возможность выполнить несколько запросов. Это один из вариантов возможной атаки.
Пользуйтесь подготовленными запросами с проверкой параметров.
Документация по substr
Подготовленные запросы
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники