我用PHP + HTML5 + JS制作了一个小的webapp,应用程序在我的本地网络服务器(在我的笔记本电脑上)完美无缺,我正在使用XAMPP v3.2.2与服务器版本:10.1.9-MariaDB mariadb.org二元分布。
我上传了所有文件并将数据库导入了网络服务器,我在一个向数据库执行MySQL查询的PHP文件中发现了一个奇怪的错误。
我得到了查询并在我的本地phpMyAdmin上手动执行并且没有错误,但在Web服务器中存在语法错误:(
这是查询的一个示例:
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服务器版本对应的手册,以获得正确的语法
有什么问题?我有几个小时试图找出来,也许我使用一些已弃用的功能?感谢阅读,请原谅那个糟糕的英语。
答案 0 :(得分:3)
您在两个地方缺少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