【发布时间】:2015-07-11 22:08:35
【问题描述】:
我昨天在这里发布了一个关于 CodeIgniter 的 mySQL 更新语法问题: CodeIgniter - MySQL Error 1064 (Update table1 inner join table2(...))
但是现在我解决了这个问题之后,又出现了另一个问题。现在更新查询不知道新创建的表。但是如果我改成select语句,它就可以顺利运行了。
出于这个原因,我决定发布完整的脚本。
代码:
<?php
$this->load->database();
$query_tbaux='CREATE TABLE IF NOT EXISTS STUDY_LIST_AUX AS (
SELECT DISTINCT p.pat_id, p.pat_custom1 age, p.pat_name,
p.pat_sex, s.study_iuid, p.pat_birthdate, s.accession_no,
s.study_datetime date_s, s.study_desc, s.mods_in_study, s.pk,
c.institution, s.study_block, s.study_urgent,
\'0000-00-00 00:00:00\' AS \'report_date\', \'{null}\' AS \'report_status\',
s.study_tipo,
s.study_src,
s.study_consulta
FROM study s
INNER JOIN patient p ON s.patient_fk = p.pk
INNER JOIN series c ON c.study_fk = s.pk
INNER JOIN rel_users_hosp u ON u.hosp_id = c.institution
WHERE s.study_datetime >= \'2015-04-26 00:00:00\'
AND s.study_datetime <= \'2015-04-30 23:59:59\'
AND s.study_iuid IS NOT NULL
AND u.user_id = \'admin\'
)';
if ($this->db->query($query_tbaux))
{
echo "Q True!<br><br>";
$data = array(
'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',
);
$this->db->update('STUDY_LIST_AUX, study_report', $data, array('STUDY_LIST_AUX.study_iuid'=>'study_report.study_iuid'));
}
else
{
echo "Q False<br><br>";
};
?>
显示/错误:
问对了!
发生数据库错误
错误号:1146
表“pacsdb.STUDY_LIST_AUX”不存在
更新
STUDY_LIST_AUX,study_reportSETSTUDY_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' 在哪里STUDY_LIST_AUX.study_iuid= 'study_report.study_iuid'
刷新页面后我检查了phpmyadmin,该表确实存在,它包含来自select语句的数据。你能告诉我我做错了什么吗?
【问题讨论】:
-
update函数的第一个参数应该是表名。'STUDY_LIST_AUX, study_report这是你的表名吗?应该是'STUDY_LIST_AUX'
标签: php mysql codeigniter