Добрый день, вопрос касается плейсхолдера в запросе SQL. Код ниже почему-то не работает. Просто не хочется в запросе оставлять переменную. Может подскажете почему? PHP: $sql = "SELECT*FROM :magic"; - обращение к таблице $query = $pdo->prepare($sql); $query->execute(['magic'=> 'users']); ошибка: Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''users'' at line 1 in От модератора: для кода кнопка </>
Хорошо). Данный запрос размещен в функции. В параметрах пробрасывается название таблицы с данными. В аргументах при вызове может указываться любая другая таблица. Если оставить переменную в запросе , то там наверное sql инъекции всякие? Как нормальные поцаны пишут безопасный код?
Ну как бы нет такой цели позволять, что-то подобное. Но какой-нибудь умник может найти её и дописать все что угодно в запрос.
еще раз читаем --- Добавлено --- и еще --- Добавлено --- а потом еще --- Добавлено --- и напоследок перед сном
У Димона ошибка: TABLE – ключевое слово (нужно брать в кавычки). А Маус написал, что имя таблицы нельзя подставлять через плейсхолдер (если это действительно нужно, используйте др. методы – белые списки и т.п.).