首页 文章

CodeIgniter - MySQL错误1064(更新table1内连接table2(...))

提问于
浏览
0

现在早上6点,我仍然在努力用CodeIgniter PHP framewok执行查询 . 希望你们能帮助我

码:

$query='
UPDATE `STUDY_LIST_AUX`
INNER JOIN `study_report` 
ON `STUDY_LIST_AUX.study_iuid`=`study_report.study_iuid`
SET `STUDY_LIST_AUX.report_date`=DATE_FORMAT(`study_report.report_date`,\'%Y-%m-%d %h:%i:%s\'), `STUDY_LIST_AUX.report_status` = `study_report.report_status`
';

if ($this->db->query($query))
{
        echo "True!<br><br>";
}
else
{
        echo "False<br><br>";
};

错误:

发生数据库错误错误号:1064您的SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以便在第22行的'UPDATE STUDY_LIST_AUX INNER JOIN study_report上使用'STUDY_LIST_AUX.study_iu'附近使用正确的语法

我已经尝试了所有东西,反引号,正常滴答,引号,但错误仍然存在 . 在phpmyadmin上,查询成功运行 .

任何建议或想法将不胜感激

先谢谢你们:)

3 回答

  • 0

    您在查询ex中有一些语法问题:

    `STUDY_LIST_AUX.study_iuid`
    

    如果你使用反引号那么它应该是

    `STUDY_LIST_AUX`.`study_iuid`
    

    应该是正确的查询

    $query = "
    update `STUDY_LIST_AUX` sla
    join `study_report`  sr on sr.study_iuid = sla.study_iuid
    set 
    sla.report_date = date_format(sr.report_date,'%Y-%m-%d %h:%i:%s'),
    sla.report_status = sr.report_status
    ";
    
  • 0

    试试这个 . 使用双引号,所以你不必担心里面的报价

    $query="UPDATE STUDY_LIST_AUX
    INNER JOIN study_report 
    ON STUDY_LIST_AUX.study_iuid = study_report.study_iuid
    SET STUDY_LIST_AUX.report_date = 
    DATE_FORMAT(study_report.report_date,'%Y-%m-%d %h:%i:%s'), 
    STUDY_LIST_AUX.report_status = study_report.report_status";
    
  • 0

    您可以使用以下Active Record代码更新 query 代码

    $data = array('s.report_date' => 'DATE_FORMAT(`study_report.report_date`,\'%Y-%m-%d %h:%i:%s\')','s.report_status' => 'sr.report_status');
    $this->db->update('STUDY_LIST_AUX s JOIN study_report sr on s.study_iuid = sr.study_iuid',$data);
    

    这会帮你...

相关问题