SQL语法错误..?

时间:2014-11-05 15:03:24

标签: php mysql sql

使用PHP与SQL交互,我不断得到一个语法错误,我在早期的脚本中使用相同的代码(相当多)。 其代码产生错误如下:

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

其中返回"您的SQL语法中有错误;查看与您的MySQL服务器版本相对应的手册,以便在#1; VALES附近使用正确的语法(''''在第1行和第34行;

我现在不能想到我的生活,弄清楚为什么会这样......我认为我在这里愚蠢地错过了最简单的事情,但是当我插入其他3个表工作正常并且这个错误时我似乎无法找出原因:/

2 个答案:

答案 0 :(得分:4)

你有 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是字符串,对于整数,使用i而不是bind_param中的s(例如)

答案 1 :(得分:2)

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

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