安然303
2021-07-31 09:37
采纳率: 50%
浏览 44

用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 无用
    打赏 举报
  • 查看更多回答(1条)

相关推荐 更多相似问题