【问题标题】:error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntaxSQL 语法错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法
【发布时间】:2017-02-11 13:32:40
【问题描述】:

我有这个查询和错误:

错误信息:

发生数据库错误

错误号:1064

您的 SQL 语法有错误;检查手册 对应于您的 MariaDB 服务器版本,以便使用正确的语法 'JOIN provinsi as provinsi ON provinsi.IDProvinsi = 第 3 行的 lokasi_wisata.IDP' 选择 id_lw,judul_lw,左(deskripsi_lw,30)deskripsi_lw,latitude_lw,longitude_lw, 来自 lokasi_wisata 的 nama_p、nama_k、status_lw、gambar_lw 由 id_lw 订购 ASC JOIN provinsi as provinsi ON provinsi.IDProvinsi = lokasi_wisata.IDProvinsi 加入 kabupaten 作为 kabupaten ON kabupaten.IDKabupaten = lokasi_wisata.IDKabupaten 其中 judul_lw 喜欢 '%%' 限制 0, 10 文件名:C:/xampp/htdocs/mtma/application/models/pagination_model.php 行号:21

查询:

 $sql = "select id_lw,judul_lw,left(deskripsi_lw,30)deskripsi_lw,latitude_lw,longitude_lw,
                nama_p,nama_k,status_lw,gambar_lw
                from lokasi_wisata ORDER BY id_lw ASC JOIN
                provinsi as provinsi ON provinsi.IDProvinsi = lokasi_wisata.IDProvinsi JOIN
                kabupaten as kabupaten ON kabupaten.IDKabupaten = lokasi_wisata.IDKabupaten where judul_lw like '%$st%' limit " . $start . ", " . $limit  ;

【问题讨论】:

标签: php mysql sql join sql-order-by


【解决方案1】:

order by 部件的位置不正确。它属于最后,而不是在加入之前:

$sql = "select id_lw,judul_lw,left(deskripsi_lw,30)deskripsi_lw,latitude_lw,longitude_lw,
                nama_p,nama_k,status_lw,gambar_lw
                from lokasi_wisata JOIN
                provinsi as provinsi ON provinsi.IDProvinsi = lokasi_wisata.IDProvinsi JOIN
                kabupaten as kabupaten ON kabupaten.IDKabupaten = lokasi_wisata.IDKabupaten where judul_lw like '%$st%' ORDER BY id_lw ASC limit " . $start . ", " . $limit  ;

【讨论】:

  • 它的工作..你怎么知道..没有你们我怎么能解决它??我应该在哪里知道 sql 的正确位置?
  • 只要谷歌'sql 教程',你会得到不少好的。这是一个开始的好地方
【解决方案2】:

SQL 语句必须按特定顺序排列。

  1. 选择
  2. 来自表
  3. 加入表
  4. 在哪里
  5. 分组依据
  6. 订购人
  7. 限制

所以您的查询需要如下所示:

$sql = "select id_lw,judul_lw,left(deskripsi_lw,30)deskripsi_lw,latitude_lw,longitude_lw,
            nama_p,nama_k,status_lw,gambar_lw
            from lokasi_wisata
            JOIN provinsi as provinsi ON provinsi.IDProvinsi = lokasi_wisata.IDProvinsi
            JOIN kabupaten as kabupaten ON kabupaten.IDKabupaten = lokasi_wisata.IDKabupaten
            where judul_lw like '%$st%'
            ORDER BY id_lw ASC
            limit " . $start . ", " . $limit  ;

【讨论】:

    【解决方案3】:

    可能是您遗漏了一个常见的或别名不是更清晰的位置 无论如何,您将 order 子句放在错误的位置

       "select id_lw,judul_lw, left(deskripsi_lw,30)deskripsi_lw,latitude_lw,longitude_lw,
                                                   ^^ here ( or you are trying to buil an alias ?)
                nama_p,nama_k,status_lw,gambar_lw
                from lokasi_wisata 
                ORDER BY id_lw ASC 
                ^^  the order by should be at the end of the query non between from and join 
                JOIN provinsi as provinsi ON provinsi.IDProvinsi = lokasi_wisata.IDProvinsi 
                JOIN kabupaten as kabupaten ON kabupaten.IDKabupaten = lokasi_wisata.IDKabupaten 
                where judul_lw like '%$st%' limit " . $start . ", " . $limit  ;
    
    
    
                 "select id_lw,judul_lw,left(deskripsi_lw,30)deskripsi_lw,latitude_lw,longitude_lw,
                nama_p,nama_k,status_lw,gambar_lw
                from lokasi_wisata ORDER BY id_lw ASC JOIN
                provinsi as provinsi ON provinsi.IDProvinsi = lokasi_wisata.IDProvinsi JOIN
                kabupaten as kabupaten ON kabupaten.IDKabupaten = lokasi_wisata.IDKabupaten where judul_lw like '%$st%' limit " . $start . ", " . $limit  ;
    

    这边

             "select id_lw,judul_lw, left(deskripsi_lw,30) as deskripsi_lw,latitude_lw,longitude_lw,
    
                nama_p,nama_k,status_lw,gambar_lw
                from lokasi_wisata 
                JOIN provinsi as provinsi ON provinsi.IDProvinsi = lokasi_wisata.IDProvinsi 
                JOIN kabupaten as kabupaten ON kabupaten.IDKabupaten = lokasi_wisata.IDKabupaten 
                where judul_lw like '%$st%' 
                ORDER BY id_lw ASC 
                limit " . $start . ", " . $limit  ;
    

    【讨论】:

      猜你喜欢
      • 2016-06-17
      • 2021-05-12
      • 2018-11-27
      • 2019-10-24
      • 2020-02-22
      • 2016-11-08
      • 2020-02-05
      • 2017-11-22
      • 1970-01-01
      相关资源
      最近更新 更多