2013-07-12 114 views
0

我試圖插入信息到表中,使用下面的查詢;Mysql插入查詢,未知錯誤

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

每當我試圖這樣做,出現下面的錯誤,「您的SQL語法錯誤;檢查對應於您的MySQL服務器版本正確的語法使用手冊」

是什麼導致了這個錯誤,怎麼解決?

+2

解決您的眼前的問題,引用您要添加的變量。但是你應該考慮在準備好的語句中使用綁定變量來使這種語句更容易和更安全。 – andrewsi

+0

+1準備好的陳述 –

回答

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'])."')"; 
0

你是不是把引號您要插入的字符串:

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

值都需要引用(假設他們都是字符串):

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

而且即使你的數據來了從數據庫中現有的數據,你仍然應該考慮Second Order SQL Injection的可能性。最合適的保護措施是使用Prepared Statement而不是將值連接到查詢中。

0

你需要引用你正在插入的值。但是你也應該考慮一個更好的插入記錄的方法。

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