0

我正在尝试使用以下查询将信息插入表中;

$sql2 = "INSERT into `djs` (`name`,`pic`,`about`) VALUES (".$row['dj_name'].",".$row['dj_picture'].",".$row['dj_intro'].")";

每当我尝试这样做时,都会出现以下错误,“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用”

是什么导致了这个错误,如何解决?

4

4 回答 4

0

您没有在要插入的字符串周围加上引号:

$sql2 = "INSERT into `djs` (`name`,`pic`,`about`) VALUES     
('".$row['dj_name']."','".$row['dj_picture']."','".$row['dj_intro']."')";
于 2013-07-12T17:04:13.613 回答
0

这些值都需要引用(假设它们都是字符串):

$sql2 = "INSERT into `djs` (`name`,`pic`,`about`) VALUES ('".$row['dj_name']."','".$row['dj_picture']."','".$row['dj_intro']."')";

此外,即使您的数据来自数据库中的现有数据,您仍然应该考虑Second Order SQL Injection的可能性。最合适的保护措施是使用Prepared Statement而不是将值连接到查询中。

于 2013-07-12T17:04:20.450 回答
0

您需要在要插入的值周围加上引号。但是您还应该考虑一种更好的插入记录的方法。

$sql2 = "INSERT into `djs` (`name`,`pic`,`about`) VALUES ('".$row['dj_name']."','".$row['dj_picture']."','".$row['dj_intro']."')";
于 2013-07-12T17:04:36.240 回答
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'])."')";
于 2013-07-12T17:04:46.287 回答