You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中MySQL查询触发语法错误,请求协助排查原因

解决你的MySQL语法错误问题

兄弟,你的问题根源很明显:字符串拼接时缺少空格,导致生成的SQL语句语法错误。

你看,你把"FROM users"和"JOIN user_auth_tickets"直接拼在一起了,结果生成的SQL里会出现FROM usersJOIN user_auth_tickets这种奇怪的写法——数据库根本识别不了usersJOIN这个东西,自然就会在解析到ON关键字的时候报错,也就是你看到的You have an error in your SQL syntax; check the manual... near 'ON users.id = user_auth_tickets.user_id...'。

给你修正后的代码,只需要在拼接的字符串之间补上空格就行:

dbConnection.SetQuery("SELECT users.id,users.username,users.rank,users.motto,users.look,users.gender,users.last_online,users.credits,users.activity_points,users.home_room,users.block_newfriends,users.hide_online,users.hide_inroom,users.vip,users.account_created,users.vip_points,users.machine_id,users.volume,users.chat_preference,users.focus_preference,users.pets_muted,users.bots_muted,users.advertising_report_blocked,users.last_change,users.gotw_points,users.ignore_invites,users.time_muted,users.allow_gifts,users.friend_bar_state,users.disable_forced_effects,users.allow_mimic,users.rank_vip " 
+ "FROM users "  // 这里补上空格,避免和后面的JOIN连在一起
+ "JOIN user_auth_tickets " 
+ "ON users.id = user_auth_tickets.user_id " 
+ "WHERE user_auth_tickets.auth_ticket = @sso AND last_ip = @lastIp " 
+ "LIMIT 1" );

额外给你两个小建议:

  • 以后遇到这类语法错误,可以先把拼接后的完整SQL语句打印出来,一眼就能发现这种空格缺失的低级问题;
  • 你已经在用参数化查询(@sso和@lastIp)了,这非常棒,能有效避免SQL注入,继续保持这个好习惯!

内容的提问来源于stack exchange,提问作者helloworld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:18:41