2012-06-05 47 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