警告:PDOStatement :: execute():SQLSTATE [42000]:语法错误或访问冲突:1064
I am trying to inner join on an update query but am getting an error about my syntax, to my knowledge it looks fine (I maybe looking over something) all the tables are there which I have included in this post for you.
My error
Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM applications INNER JOIN jobs ON applications.app'
My SQL
$sql = "UPDATE applications
SET applications.application_status = 1
FROM applications
INNER JOIN jobs
ON applications.application_job = jobs.job_id
WHERE applications.application_user = ?
AND jobs.job_enabled=1";
Jobs table I am inner joining
CREATE TABLE IF NOT EXISTS `jobs` (
`job_id` int(11) NOT NULL,
`job_name` varchar(100) NOT NULL,
`job_description` text NOT NULL,
`job_duration` int(11) NOT NULL,
`job_country` varchar(100) NOT NULL,
`job_category` int(50) NOT NULL,
`job_user` int(100) NOT NULL,
`job_employer` varchar(100) NOT NULL,
`job_enabled` int(2) NOT NULL DEFAULT '1',
`job_startdate` date NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
Applications table I am updating
CREATE TABLE IF NOT EXISTS `applications` (
`application_id` int(11) NOT NULL,
`application_user` varchar(100) NOT NULL,
`application_date` datetime NOT NULL,
`application_job` int(11) NOT NULL,
`application_status` int(11) DEFAULT '0',
`application_enabled` int(2) NOT NULL DEFAULT '1'
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
我正在尝试对更新查询进行内部联接但是我的语法出错了,据我所知它看起来 很好(我可能会查看某些内容)我在这篇文章中列出了所有表格。 p>
我的错误 strong> p>
\ n 警告:PDOStatement :: execute():SQLSTATE [42000]:语法错误或
访问冲突:1064 SQL语法中有错误; 检查与你的MySQL服务器版本相对应的
手册,以便在'FROM applications INNER JOIN jobs ON
applications.app' p>
blockquote>
我的SQL strong> p>
作业表我是内在的 加入 strong> p>
应用程序表我正在更新 strong> p>
$ sql =“UPDATE applications
SET applications.application_status = 1
FROM applications
INNER JOIN jobs
ON applications.application_job = jobs.job_id
WHERE applications.application_user =?
AND jobs.job_enabled = 1“;
code> pre>
CREATE TABLE IF NOT EXISTS`jobs`(
`job_id`int(11)NOT NULL,
`work_name` varchar(100)NOT NULL,
`work_description`文本NOT NULL,
`work_duration` int(11)NOT NULL,
`work_country` varchar(100)NOT NULL,
`work_category` int(50)NOT NULL,
job_user` int(100)NOT NULL,
`work`employer` varchar(100)NOT NULL,
`work_enabled` int(2)NOT NULL DEFAULT'1',
`work_startdate` date NOT NUL L
)ENGINE = InnoDB AUTO_INCREMENT = 2 DEFAULT CHARSET = latin1;
code> pre>
CREATE TABLE IF NOT NOT EXISTS`applications`(
`in application_id` int(11)NOT NULL,
`in application_user` varchar(100)NOT NULL,
`in application_date` datetime NOT NULL, \ _`application_job` int(11)NOT NULL,
`inapplication_status` int(11)DEFAULT'0',
`in application_enabled` int(2)NOT NULL DEFAULT'1'
)ENGINE = InnoDB AUTO_INCREMENT = 3 DEFAULT CHARSET = latin1;
code> pre>
div>
MySQL doesn't support FROM clause in Update
Statement. Unlike SQL Server, your join
statement needs to be before SET
as well. You could simply do this instead:
$sql = "UPDATE applications a
INNER JOIN jobs j ON a.application_job = j.job_id
SET a.application_status = 1
WHERE a.application_user = ?
AND j.jobs_enabled = 1"