2012-06-05 3 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 . "%'"); 

이 워드 프레스를 위해 내가 내가 아는 한, 어떤이 아직 없기 때문에 발췌 길이를 추가 할 수있는 옵션을 만들고있어. 감사!

에단 브라우어는

+0

어쨌든 끝에 삽입되므로 '삽입 삽입'에는 'WHERE'가 필요하지 않습니다. 그냥 두십시오. –

+0

SQL 인젝션에 취약합니다.이 스레드를 읽지 못하도록 막으십시오. http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php – ChristopheD

답변

3

새 레코드를 작성해야하기 때문에 삽입 할 위치를 사용할 수 없습니다. 찾을 레코드가 없습니다. 대신 업데이트를 사용해야합니다.

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

Dan은 구문이 올바르지 않다고 지적했습니다. WordPress의 발췌 길이를 제한하려면 필터를 사용할 수 있습니다. this post을 살펴보십시오.