2012-06-05 46 views
2

这是我的mysql语句,但由于某种原因,它实际上并没有工作,我不明白为什么。提前致谢!这个mysql语句有什么问题 - INSERT INTO ... WHERE ... OR?

$ID = $_GET['post']; 
$length = $_POST['excerpt_length']; 

more code here to connect and select db... 

mysql_query(" 
INSERT INTO wp_posts (excerpt) 
VALUES(" . $length . ") 
WHERE ID = " . $ID . " 
OR post_name LIKE '" . $ID . "%'"); 

这是为wordpress和我正在做一个选项添加一个摘录长度,因为据我所知,还没有任何。谢谢!

伊桑·布劳威尔

+0

在INSERT INTO中不需要'WHERE',因为无论如何它都会被添加到末尾。只是把它抛出 –

+0

这是易受SQL注入攻击,请阅读本主题以了解如何防止它:http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php – ChristopheD

回答

3

你不能使用插入到哪里,因为你应该创建一个新的记录,没有引用寻找。您必须改用Update。

mysql_query(" 
UPDATE wp_posts 
SET excerpt = '" . $length . "' 
WHERE ID = '" . $ID . "' 
OR post_name LIKE '" . $ID . "%'"); 
+0

谢谢!几分钟后,我在雅虎上发现了它,但谢谢。这是有道理的。 –

0

我没有检查,但我不认为你可以在INSERT查询使用OR语句。也许在这之前做另一个查询来找出一个id插入..?

4

如果您已经有一个ID,并且想要保持该ID不变,请使用UPDATE声明。

1

INSERT ...在表格中插入新行。它没有WHERE条款。
如果要更新现有行,请使用UPDATE ...语句。

1

正如丹指出你的语法是不正确的。如果你想限制WordPress的摘录长度,你可以使用过滤器。看看this post