У меня возникла такая ошибка: Fatal error: Uncaught mysqli_sql_exception: 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 '[u.id](u.id) AS user_id, p.*, [c.quantity](c.quantity) FROM cart c JOIN produc' at line 1 in C:\OSPanel\domains\upautostore\cart.php:10. Я не понимаю, в чем может быть проблема, и пробовал много различных решений, включая использование чата GPT, но ни одно из них не помогает. Вот код, в котором возникает ошибка: <br/> <?php <br/> session_start(); <br/> include 'inc/config.php'; <br/> <br/> if (!isset($_SESSION['user'])) { <br/> header('Location: login.php'); <br/> } <br/> <br/> // Объединяем два SQL-запроса в один <br/> $cart_query = $mysqli->prepare("SELECT [u.id](u.id) AS user_id, p.*, [c.quantity](c.quantity) <br/> FROM cart c JOIN products p ON [c.product_id](c.product_id) = [p.id](p.id) <br/> JOIN users u ON [c.user_id](c.user_id) = [u.id](u.id) <br/> WHERE [u.username](u.username) = ?"); <br/> $cart_query->bind_param("s", $_SESSION['user']); <br/> $cart_query->execute(); <br/> $cart_result = $cart_query->get_result(); <br/> <br/> $total_price = 0; <br/> ?>
Ваш SQL-запрос содержит синтаксическую ошибку из-за использования квадратных скобок для указания полей и таблиц. В MySQL для этих целей используются обратные кавычки, если вам нужно экранировать идентификаторы (хотя в большинстве случаев это не требуется). Кроме того, использование точки для доступа к полям с помощью квадратных скобок также является ошибочным. Вот исправленная версия вашего SQL-запроса: ```php $cart_query = $mysqli->prepare("SELECT u.id AS user_id, p.*, c.quantity FROM cart c JOIN products p ON c.product_id = p.id JOIN users u ON c.user_id = u.id WHERE u.username = ?"); ``` Основные изменения: 1. Удалены квадратные скобки вокруг полей: `[u.id](u.id)` заменено на `u.id`, и так далее. 2. Убран лишний `<br/>`, так как это бесполезно в контексте SQL-запроса в строке. Проверьте исправленный код, и ошибка должна исчезнуть. Если вам нужно использовать какую-либо специфическую конструкцию SQL, пожалуйста, уточните, но в общем случае данная структура запроса должна работать корректно.
SELECT [u.id](u.id)
а где вы такой синтаксис нашли? Совершенно очевидно непонимание от сервера, что вы этим пытаетесь сказать, я тоже не понимаю, что этот синтаксис должен значить.
https://dev.mysql.com/doc/refman/8.4/en/identifier...
Такое ощущение, что код пропустили через какой-то markdown-редактор, который посчитал, что запись видаu.id
это адрес сайта и автоматически заменил на соответствующий markdown-синтаксис ссылок. Такое может быть, например, при пересылке кода как обычного текста в мессенджерах.