我正在尝试使用以下查询将值插入 mysql 数据库:
INSERT INTO TestTable (SearchTerm, SearchResult)
VALUES (?, ?), ("TestTerm", "TestResult");
我收到错误消息,指出在第 1 行有错误“靠近'?,?)(“TestTerm”,“TestResult”)'。
有人介意指出我的错误吗?
与?
PDO 和 mysqli 等框架一起使用。正常的插入看起来像这样
INSERT INTO TestTable (SearchTerm, SearchResult)
VALUES ('TestTerm', 'TestResult');
或者
INSERT INTO TestTable (SearchTerm, SearchResult)
SELECT 'TestTerm', 'TestResult';
脚本直接:
INSERT INTO TestTable (SearchTerm, SearchResult)
VALUES ("TestTerm", "TestResult");
使用准备好的语句:
INSERT INTO TestTable (SearchTerm, SearchResult) VALUES (?, ?);
看起来您正在尝试使用perpared statement。这个想法是问号代表可能包含查询中断字符(即分号和引号)的值。
如果您使用的是库,通常需要使用两个步骤来执行此操作。例如,在java中:
PreparedStatement ps = new PreparedStatement( "INSERT INTO TestTable (SearchTerm, SearchResult) VALUES (?, ?)");
ps.execute("TestTerm", "TestResult");
ps.execute("Escaped;Term", "TestResult"); // the semicolon will be escaped for you
大多数语言都有通用的 SQL 库,允许您执行此操作。您使用什么语言?