我正在尝试使用以下查询将信息插入表中;
$sql2 = "INSERT into `djs` (`name`,`pic`,`about`) VALUES (".$row['dj_name'].",".$row['dj_picture'].",".$row['dj_intro'].")";
每当我尝试这样做时,都会出现以下错误:“您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以获得正确的语法”
导致此错误的原因是什么?如何解决?
答案 0 :(得分:0)
您没有在要插入的字符串周围加上引号:
$sql2 = "INSERT into `djs` (`name`,`pic`,`about`) VALUES
('".$row['dj_name']."','".$row['dj_picture']."','".$row['dj_intro']."')";
答案 1 :(得分:0)
所有值都需要引用(假设它们都是字符串):
$sql2 = "INSERT into `djs` (`name`,`pic`,`about`) VALUES ('".$row['dj_name']."','".$row['dj_picture']."','".$row['dj_intro']."')";
即使您的数据来自数据库中的现有数据,您仍应考虑Second Order SQL Injection的可能性。最合适的安全措施是使用Prepared Statement而不是将值连接到查询中。
答案 2 :(得分:0)
您需要围绕要插入的值的引号。但是你也应该考虑一种更好的插入记录的方法。
$sql2 = "INSERT into `djs` (`name`,`pic`,`about`) VALUES ('".$row['dj_name']."','".$row['dj_picture']."','".$row['dj_intro']."')";
答案 3 :(得分:0)
使用mysql_real_escape_string();
来转义您的值并将它们放入单引号中:
$sql2 = "INSERT into `djs` (`name`,`pic`,`about`) VALUES ('".mysql_real_escape_string($row['dj_name'])."', '".mysql_real_escape_string($row['dj_picture'])."', '".mysql_real_escape_string($row['dj_intro'])."')";