php - 我不明白为什么会收到此 MySQL 语法错误 (PHP PDO) (MySQL)

标签 php mysql pdo insert

我正在尝试对 MySQL 数据库进行简单的插入,但出现以下语法错误:

Fatal error: Uncaught PDOException: 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
'Combined Authority - ICT Service Desk Technician (WYCA 53) ' at line 2

为什么?

查询:

$conn->exec("INSERT INTO jobs (jobname, category, contract, link)
SELECT * FROM (" . $name[$i] . "," .  $category[$i] . "," . $contract[$i] 
. "," . $link[$i] . ") AS tmp
WHERE NOT EXISTS (
SELECT link FROM jobs WHERE link = '" . " " . $link[$i] . ") LIMIT 1;"); 

$sql 打印:

INSERT INTO jobs (jobname, category, contract, link) SELECT * FROM ( West
Yorkshire Combined Authority - ICT Service Desk Technician (WYCA 53)
Details ,' Other ',' Other
','https://bradford.engageats.co.uk/ViewVacancyV2.aspx?
enc=mEgrBL4XQK0+ld8aNkwYmF3VpPuSfX9mpz94c96U/BBgu1IZbwnQ0d+smFL6YrlPhdWkSGi559WmVou+xCXKsYHbHKP0EyHRCwf+vYTu8aYRJbtJgz78Wm2KQgu+LktushGT2Rg0PHjiRMA2Xyn4gw==') AS tmp WHERE NOT EXISTS ( SELECT link FROM jobs WHERE link ='https://bradford.engageats.co.uk/ViewVacancyV2.aspx?enc=mEgrBL4XQK0+ld8aNkwYmF3VpPuSfX9mpz94c96U/BBgu1IZbwnQ0d+smFL6YrlPhdWkSGi559WmVou+xCXKsYHbHKP0EyHRCwf+vYTu8aYRJbtJgz78Wm2KQgu+LktushGT2Rg0PHjiRMA2Xyn4gw==') LIMIT 1;

对上面格式错误表示歉意。请将其复制并粘贴到文本编辑器中以便更好地查看。

编辑:

奇怪的是,这个查询适用于虚拟值,但它仍然不适用于数组

INSERT INTO jobs (jobname, category, contract, link)
SELECT * FROM (SELECT 'Test', 'Test2',
'Test3','https://bradford.engageats.co.uk/ViewVacancyV2.aspx?
enc=mEgrBL4XQK0+ld8aNkwYmEUlxXraCLcDtY5P6rS92ks+pMDnlWa9QO6M/Df/HLticzgbgVWV
YayJj+zNDXalJnejkDY/4/gH0pIF9KyvMFXjn0u0quGSUzf4M/Gh0wF0MqIRgwLERFf+xXj6lw4s
tQ==') AS tmp
WHERE NOT EXISTS (
SELECT link FROM jobs WHERE link = 'https://bradford.engageats.co.uk/ViewVacancyV2.aspx?enc=mEgrBL4XQK0+ld8aNkwYmEUlxXraCLcDtY5P6rS92ks+pMDnlWa9QO6M/Df/HLticzgbgVWVYayJj+zNDXalJnejkDY/4/gH0pIF9KyvMFXjn0u0quGSUzf4M/Gh0wF0MqIRgwLERFf+xXj6lw4stQ=='
) LIMIT 1;

最佳答案

尝试这个选择查询并对其他变量执行相同的操作:

SELECT * FROM ("'".$name[$i]."','".$category[$i]."', '".$contract[$i] ."', '". $link[$i] ."'") AS tmp

关于php - 我不明白为什么会收到此 MySQL 语法错误 (PHP PDO) (MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42669309/

相关文章:

php - 从这个 while 语句更新 mysql 行的正确 foreach 表达式是什么?

javascript - PHP PDO 中的类似 AJAX 的按钮不起作用

php - 如何在 JavaScript 中解析 SQL 查询返回?

php - Codeigniter 从字段开始 (dbforge)

php - 用于消息收件箱的 Jquery/Javascript gmail 风格的内容,例如使用复选框选择所有消息等

在 phpMyAdmin 中返回的 node-mysql 中缺少 MySQL 查询结果

php - 尝试使用 PDO 将新行插入数据库

php - MySQLI 准备语句 : num_rows & fetch_assoc

javascript - Codeigniter:无限滚动不适用于数据库

mysql - 将Asterisk中的sip注册/注销保存到MySQL中