2012-06-06 6 views
1

이 업데이트 쿼리가 작동하지 않는 이유를 누구든지 알 수 있습니까?PHP/MYSQL 업데이트 쿼리가 작동하지 않습니다.

if ($_GET['update']) { 
include 'config.php'; 
//Connect to MYSQL Database server 
$connect = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Could not connect to MYSQL Database."); 
$result = mysql_select_db(DB_NAME, $connect) or die("Could not connect to MYSQL table."); 

mysql_query("UPDATE contact SET read = 1 WHERE id = '$_GET[update]'")or die("Query failed."); 
echo "Update works!"; 
} else { 
echo "Update does not work...ughh."; 
} 

감사합니다.

편집 : 작동하는 쿼리가 있습니다. 보안에 대해 걱정하는 사람은이 스크립트를 테스트로 사용하여 내가 사용하고 싶었는지 확인했습니다. 방금 스크립트가 작동 할 때 보안을 추가했습니다. 도움과 조언을 해주셔서 감사합니다.

+1

이 코드를 디버깅하지 여기 있었, 당신은 어떤 오류가있다? – Brendan

답변

5

열 읽기 란 무엇입니까?

mysql_query("UPDATE contact SET read = 1 WHERE id = '$_GET[update]'") 

읽기의 대문자로 판단 할 때, 해당 열에 대해 MySQL에서 예약어를 사용하고있는 것으로 판단됩니다.

참조 :

Reserved Words in MySQL

단지 주변 읽기 따옴표를 넣어,이 문제를 해결하세요. I.E.

mysql_query("UPDATE contact SET 'read' = 1 WHERE id = '$_GET[update]'") 

또는 j.bruni 당 더 나은 :

mysql_query("UPDATE contact SET `read` = 1 WHERE id = '$_GET[update]'") 
+0

이거 야! 덕분에 친구! 하하 나는 '읽기'를 사용하는 것에 너무 어리 석다. LOL 최고의 답변. – Sephiroth

+3

설명서에는 따옴표 대신 "역 따옴표"문자를 사용하는 것이 좋습니다. –

+0

J.Bruni가 맞으면 역 따옴표를 대신 사용하십시오. – spitfire

0

이 당신이 $ _GET을 가지고 문자열을 이스케이프 할 필요가 믿는 특정 문제

3

하지 않은 경우 당신은 너무

mysql_query("UPDATE contact SET read = 1 WHERE id = '".(int)$_GET['update']."'")or die("Query failed."); 

을 테스트 할 수 있습니다 [ '업데이트']는 가치의 추가 끈. 그러나 당신은 정말로 당신이 악의적 인 사용자에 의해 공격받을 수있는 준비된 문장을 사용해야합니다.

문 준비 : http://php.net/manual/en/pdo.prepared-statements.php

7

쿼리 라인이 시도 :

mysql_query("UPDATE contact SET read = 1 WHERE id = '".$_GET[update]."'")or die("Query failed: " . mysql_error()); 

공지 더 나은 오류 처리에 대한 die() 문의 변화 :

die("Query failed: " . mysql_error()); 

* 또한, 단지 참고로 SQL 인젝션을 막기 위해 사용자 변수 (예 : GET 변수)를 실제로 벗어나야합니다 :

mysql_query("UPDATE contact SET read = 1 WHERE id = '".mysql_real_escape_string($_GET[update])."'")or die("Query failed: " . mysql_error()); 

결과를 다시보고하십시오.

+3

+1 OP가이 순간에 SQL 인젝션에 대해 읽어야하기 때문에 +1 –

+0

그건 작동하지 않습니다. – Sephiroth

+0

아직 보안을 추가하지 않았습니다! – Sephiroth

-1
mysql_query("UPDATE contact SET read = 1 WHERE id = '.$_GET[update].'")or die("Query failed."); 
echo "Update works! 

는 mysql_query를 사용하지보십시오. 그것은 오래되었고 효율적이지 않습니다. 왜 PDO에 대해 배우고 진술을 준비하려고하지 않습니까?

관련 문제