Я сделал небольшое веб-приложение с поддержкой PHP + HTML5 + JS, приложение работает без ошибок на моем локальном веб-сервере (на моем ноутбуке), я использую XAMPP v3.2.2 с версией сервера: 10.1.9-MariaDB mariadb.org бинарный дистрибутив.
Я загрузил все файлы и импортировал базу данных на веб-сервер, и я получил странную ошибку в одном PHP-файле, который выполняет запрос MySQL к базе данных.
Я получил запрос и вручную выполнить на моем локальном phpMyAdmin и работает без ошибок, но в веб-сервере есть синтаксическая ошибка 🙁
Это пример запроса:
SELECT DISTINCT 100 AS cyear, DATE_FORMAT( personas.fecha, '%d/%m/%Y' ) AS fecha, 1 AS numb, personas
.id_persona, personas.distancia, (
personas.rating - (
SELECT valor.valor FROM valor WHERE valor.valor=1 AND valor.distancia=(
SELECT personas.distancia WHERE personas.id_persona=1))) AS calc, (personas.rating +
personas.rating - (
SELECT valor.valor FROM valor WHERE valor.valor=1 AND valor.distancia=(
SELECT personas.distancia WHERE personas.id_persona=1))) As clase, personas.rating
FROM personas, valor WHERE personas.id_persona=1 AND valor.valor=1
Ошибка: # 1064 — у вас ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного синтаксиса
Что не так? У меня есть часы, пытаясь выяснить, может быть, я использую некоторые устаревшие функции? Спасибо за чтение и, пожалуйста, прости этот плохой английский.
Вам не хватает FROM personas
в двух местах.
По какой-то причине MariaDB не против, но MySQL видит в этом синтаксическую ошибку.
Вот исправленный код: (без синтаксических ошибок.)
SELECT DISTINCT 100 AS cyear, DATE_FORMAT( personas.fecha, '%d/%m/%Y' ) AS fecha, 1 AS numb, personas
.id_persona, personas.distancia, (
personas.rating - (
SELECT valor.valor FROM valor WHERE valor.valor=1 AND valor.distancia=(
SELECT personas.distancia FROM personas WHERE personas.id_persona=1))) AS calc, (personas.rating +
personas.rating - (
SELECT valor.valor FROM valor WHERE valor.valor=1 AND valor.distancia=(
SELECT personas.distancia FROM personas WHERE personas.id_persona=1))) As clase, personas.rating
FROM personas, valor WHERE personas.id_persona=1 AND valor.valor=1
Других решений пока нет …