Php 执行排名查询时出现mysql语法错误

Php 执行排名查询时出现mysql语法错误,php,mysql,syntax,Php,Mysql,Syntax,我想执行排名查询,但我不确定什么是正确的语法 我的问题是: static public function sortranks(){ global $db; $sql ="TRUNCATE TABLE `ranking`"; $db->query($sql); $sql = "INSERT INTO `ranking` (`user_id`) VALUES ( SELECT `employe_id` FROM `rates_employe` W

我想执行排名查询,但我不确定什么是正确的语法 我的问题是:

  static public function sortranks(){
    global $db;
    $sql ="TRUNCATE TABLE `ranking`";
    $db->query($sql);

    $sql = "INSERT INTO `ranking` (`user_id`) VALUES 
    ( SELECT `employe_id` FROM `rates_employe` WHERE `status` = '0' ORDER BY rawpoint DESC ) ";
    $db->query($sql);

    $sql = "UPDATE  rates_employe , ranking  SET rates_employe.rank = ranking.rank WHERE 
    rates_employe.employe_id = ranking.user_id ";
    $db->query($sql);
    echo 'ok';
    exit;
  }
当我运行此查询时,我一直遇到语法错误

数据库查询失败:您的SQL语法有错误;检查 与右边的MySQL服务器版本相对应的手册 使用near“从工资中选择员工id”的语法 状态='0'第2行按原始点排序'


您应该逐个执行查询,而不是将它们连接在一起

使用简单赋值更改.=字符串连接,并在赋值每个查询后执行它。例如:

 $sql = "TRUNCATE TABLE ranking";
 $db->query($sql);
 $sql = "INSERT INTO `ranking`(`user_id`) VALUES ..."; 
 $db->query($sql);
还要从查询中删除值:

插入到用户id中 从rates_employe中选择employe_id,其中状态为“0”,按rawpoint DESC排序


抱歉,如果我听起来很迂腐,但在英语中,Employee的单词末尾有两个e。

尝试分别运行每个查询:

static public function sortranks(){ global $db; $sql ="TRUNCATE TABLE ranking"; $db->query($sql); $sql = "INSERT INTO `ranking`(`user_id`) VALUES ( SELECT `employe_id` FROM `rates_employe` WHERE `status` = '0' ORDER BY `rawpoint` DESC ) "; $db->query($sql); $sql = "UPDATE rates_employe , ranking SET rates_employe.rank = ranking.rank WHERE rates_employe.employe_id = ranking.user_id "; $db->query($sql); echo 'done'; exit; }
我已经更新了我的答案,你使用了错误的插入语法。。。选择