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; }
我已经更新了我的答案,你使用了错误的插入语法。。。选择