我正在尝试使用SQL将多行添加到数据库中,并且错误消息
"您的SQL语法有错误;查看与您的MariaDB服务器版本对应的手册,以获得正确的语法,以便在'' imglist'附近使用。 (' urlImg',' idProduct')价值观(' C //',' 1')(' C // '' 1')(' C ^ //'' 1')(' C ^ //',& #39; 1')'在第1行"
这是此功能的代码
$sql = 'INSERT INTO \'imgList\' (\'urlImg\', \'idProduct\') VALUES';
for($i=0;$i<10;$i++){
$sql .= '(\'' . $_POST['urlImg'][$i] . '\',\''
. $_POST['idProduct'][$i] .'\')';
if ($i<count($_POST['urlImg']) - 1) {
$sql .= ',';
}
}
答案 0 :(得分:0)
嗯,首先,像其他人说的那样,永远不要将值直接连接到SQL字符串中。它不仅会让您面临SQL注入的风险,而且如果您的数据中有单引号也会失败。
如果您构建的查询失败,则使用echo输出并检查它。您看到的错误是因为您在表和列名称周围放置单引号('),这是错误的。你应该使用反引号(`)或不使用任何东西 - 引号仅用于文字字符串。
$sql = 'INSERT INTO `imgList` (`urlImg`, `idProduct`) VALUES ';
但是您的代码还有其他问题。即使for($i=0;$i<10;$i++){
中只有1个元素,$_POST['urlImg']
也会循环10次,从而导致错误。并且由VALUES('C//','1')('C//','1')('C//','1')('C//','1')
错误地判断,代码的这一部分:
if ($i<count($_POST['urlImg']) - 1) {
$sql .= ',';
}
甚至无法正常工作,因为在(...)
之间甚至没有插入逗号。不知道为什么,当我自己尝试时,它工作得很好,也许你没有表现出什么。