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

时间:2015-05-01 05:05:52

标签: php mysql codeigniter

现在早上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 :(得分: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";

答案 1 :(得分: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
";

答案 2 :(得分: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);

这会帮助你......