繁体   English   中英

仅在PHP中执行查询时,SQL语法错误

[英]SQL syntax error only when executing a query in PHP

我相信PHP会有问题。 出现以下错误:

您的SQL语法有误; 检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第2行的'SELECT @n:= @ n + 1作为count,interests.id,entity.id,entity.name'附近使用

如果我在MySql中执行以下查询,它将成功执行并返回所需结果。 但是,当我使用PHP执行相同的查询时,不会发生这种情况。

 SET @n = 0 ;
    SELECT @n := @n + 1   as count
      , interests.id
      , entity.id
      , entity.name
      , entity.entity_type
      , entity.city_country_province
      , entity.street_address
      , entity.user_id
      , entity.descript
      , entity.icon
      , city_country_province_type.city
      , city_country_province_type.province
      , city_country_province_type.country
      , entity.linkout
      , entity.map_lng
      , entity.map_lat              
    FROM interests INNER JOIN interest_entity ON interests.id = interest_entity.interet_id
    INNER JOIN entity ON interest_entity.entity_id = entity.id
    INNER JOIN city_country_province_type ON entity.city_country_province = city_country_province_type.id             
    WHERE ((interests.id)=9) 
    GROUP BY interests.id
      , entity.id
      , entity.name
      , entity.entity_type
      , entity.city_country_province
      , entity.street_address
      , entity.user_id
      , entity.descript
      , entity.icon
      , city_country_province_type.city
      , city_country_province_type.province
      , city_country_province_type.country
      , entity.linkout
      , entity.map_lng
      , entity.map_lat   
      HAVING count >= 10 AND count <= 20 order by entity.name desc

趣味性:我正在使用的Web服务器不支持MySqli,因此我正在使用mysql_query()函数。 我怀疑这可能是问题的一部分。 但是,我使用MySql WAMP执行它以进行localhost测试,并收到相同的错误。

您不能在一个API调用中运行多个查询。

简单的解决方案:使用多个API调用。 一个是SET @n=0 ,然后是一个单独的API调用以执行SELECT查询。 只要你使用MySQL的同一个连接,价值@n停留在会议活着。

mysqli扩展确实支持mysqli_multi_query()但我仍然建议一次执行一个查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM