JJpZh 2021-07-31 09:37 采纳率: 75%
浏览 79
已结题

用tp6写的sql语句好像出bug了

 $data = Db::table("exam_situation")
                    ->alias("es")
                    ->join("exam_plan ep", "ep.ep_id=" . $posts["ep_id"])//exam_plan.ep_id==form传过来选择的ep_id
                    ->join("student stu", "stu.stu_num=es.usernum")//exam_situation.usernum==student.stu_num
                    ->field("title,study_year,semester,in_year,major,classname,stu_num,name,grade")
                    ->where([

                        ["es.grade", $char, $grade_num],
                        ["es.ep_id", "=", $posts["ep_id"]],//exam_situation.ep_id==form传过来选择的ep_id
                        ["es.ac_id", "=", session("ac_id")]
                    ])
                    ->fetchSql(true)
                    ->select();
                echo $data;

输出的语句是:

SELECT `title`,`study_year`,`semester`,`in_year`,`major`,`classname`,`stu_num`,`name`,`grade` 
FROM `exam_situation` `es` INNER JOIN `exam_plan` `ep` ON `ep`.`ep_id`=`28`
 INNER JOIN `student` `stu` ON `stu`.`stu_num`=`es`.`usernum`
 WHERE `es`.`grade` <= '59' AND `es`.`ep_id` = '28' AND `es`.`ac_id` = '9'

注意看第一个28那里是反引号,就很奇怪,导致数据库也查不出来。谁能帮我回答一下为什么

  • 写回答

2条回答 默认 最新

  • 没事干写博客玩 2021-08-02 07:19
    关注

    因为join on是用来做关联的,按理说左右都应该是表名.字段名,tp会帮你加上反引号来避免关键字或保留字出现的错误,你那个条件应该写在where里而不是on里

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月10日
  • 已采纳回答 8月2日
  • 创建了问题 7月31日

悬赏问题

  • ¥15 r语言神经网络自变量重要性分析
  • ¥15 基于双目测规则物体尺寸
  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢