SQL语法错误..?

问题描述:

使用PHP与SQL进行交互,并且在脚本中早些时候我有相同的代码(几乎)正常工作时,我总是收到语法错误。 这是产生错误的代码如下:SQL语法错误..?

$query = "INSERT INTO `child_table` (`id`, `url`, `uid`) VALES ('','".mysql_real_escape_string($value)."', '".$uid[0]."')"; 
     $ex = execute_query($query); 

其中返回“你在你的SQL语法错误;检查对应于你的MySQL服务器版本使用附近的“正确的语法手册VALES('',''在线1“

我不能为我的生活做好准备,现在弄清楚为什么这是..我认为这是我愚蠢的想念这里最简单的东西,但仍然当我插入3其他表工作正常,这个错误,我只是无法弄清楚为什么:/

+2

'VALES' - >'VALUES' – Rizier123 2014-11-05 15:04:07

+0

“Code失明“是这种痛苦的名称。我的习惯是在命令行上工作时,使用'UDPATE'而不是'UPDATE'。 – 2014-11-05 15:09:27

+0

谢谢,不敢相信我一直如此愚蠢,错过了 TrueSlawter 2014-11-05 15:09:54

你有VALES,但它应该是VALUES

$query = "INSERT INTO 
`child_table` (`id`, `url`, `uid`) 
VALUES 
('','".mysql_real_escape_string($value)."', '".$uid[0]."')"; 

$ex = execute_query($query); 

您应该使用mysqli_或PDO来代替!您可以使用mysqli_和PDO准备好的语句,这更安全!

举例mysqli_:

$db = new mysqli ("HOST","USER","PASS","DB"); 
$stmt = $db->prepare("INSERT INTO 
         `child_table` (`id`, `url`, `uid`) 
         VALUES 
         ('',?,?)"); 
$stmt->bind_param('ss',$value,$uid[0]); 
$stmt->execute(); 

假设URL和UID是字符串,对于整数在bind_param使用我的不是s(例如)

+0

谢谢,不敢相信我一直这么愚蠢,错过了 TrueSlawter 2014-11-05 15:10:29

+0

我做得更糟。 – 2014-11-05 15:21:55

你必须写VALUES而不是你VALES像这样:

$query = "INSERT INTO `child_table` (`id`, `url`, `uid`) VALUES ('','" . mysql_real_escape_string($value) . "', '" . $uid[0] . "')"; 
$ex = execute_query($query); 
+0

谢谢,不敢相信我一直这么愚蠢,错过了 TrueSlawter 2014-11-05 15:10:44

+0

@TrueSlawter:D我认为这是一个休息的标志! – Rizier123 2014-11-05 15:11:52