douyi6290 2016-10-12 00:10
浏览 48
已采纳

关于网络服务器上嵌套算术MySQL查询的问题

I made a little webapp maded with PHP+HTML5+JS, the app work flawless on my local webserver (on my laptop), I'm using XAMPP v3.2.2 with Server version: 10.1.9-MariaDB mariadb.org binary distribution.

I uploaded all files and imported the database to a webserver, and I get an weird error in one PHP file that exec a MySQL query to the database.

I got the query and manually exec on my local phpMyAdmin and works with no errors, but in the webserver there is a syntax error :(

This is an example of the query:

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

The Error: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax

What's is wrong? I have hours trying to find out, maybe I use some deprecated functions? Thanks for reading and please forgive that bad english.

  • 写回答

1条回答 默认 最新

  • douejuan9162 2016-10-12 12:11
    关注

    You are missing FROM personas in two places.

    For some reason MariaDB doesn't mind it but MySQL sees it as a syntax error.

    Here's the fixed code: (No syntax errors.)

    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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?