2013-08-14 2 views
0

나는 PHP에서 좋아하는/싫어하는 것을 만들고있다 & html. 그래서 각 블로그에 좋아하는 것을 사용하기 때문에 블로그 ID를 사용합니다. 나는 테이블에서 "likes"를 어떻게 업데이트 할 수 있는지 알고 싶지만, id를 사용하여 특정 행의 "likes"만 업데이트하십시오. 다음은 PHP 스크립트입니다 :테이블의 특정 데이터를 업데이트하는 방법은 무엇입니까?

<?php 

require 'init.php'; 

$rating = $_GET['rating']; 
$postid = $_GET['id']; 

if ($rating = "like") { 
    $sql = " 

    "; 
} 

if ($rating = "dislike") { 
    $sql = " 
     UPDATE 
      posts 
     SET 
      dislikes = dislikes+1 
     WHERE 
      id = $postid  
    "; 
} 
?> 
+0

comparision is'==' –

답변

3

가 업데이트 쿼리가 여기에 문제가 될 것 같지 않습니다, 주요 문제는 비교 연산자를 사용하지 않는하지만, 할당 연산자를 사용하여 if 문이다.

문 : if ($rating = "like") 변수 $rating 가치 "like"을 할당, 내가 당신이하고 싶은 생각되는, 값 "like"에 대해 $rating을 비교하지 않습니다.

다른 중요한 "주요"문제는 SQL 주입 공격에 널리 열려 있다는 것입니다. 귀하가 귀하의 의견에 mysql_ 기능을 사용하고 있다고 언급 했으므로, 적어도 mysql_real_escape_string 기능을 사용하고 싶습니다. 예 :

$rating = mysql_real_escape_string($_GET['rating'], $con); // assuming $con is your MySQL Connection 
$postid = mysql_real_escape_string($_GET['id'], $con); 

또 하나의 중요한 점은 mysql_ 기능이 사용되지 않습니다. mysqli 또는 pdo을 사용해야합니다.

마지막으로 유의할 점은 평점이 "like" 인 경우 검색어가 비어 있다는 것입니다. 다행히 empty인지 확인한 후에 mysql_query을 호출하십시오. 여기에는 표시되지 않습니다.

+0

신경 쓰지 마라, 나는 새내기 오류가 발생했다. 나는 "mysql_query ($ sql)"을 추가하는 것을 잊었다. 도움 tho 주셔서 감사합니다! –

+0

@JamesL. 하지만 Vinodadhikary는 여전히 옳다 :'=='을 사용할 때 if 문에서'='를 사용하고있다. 왜냐하면, if 문은 항상 true를 반환하기 때문에 조심하십시오. – hannebaumsaway

+0

아니요, 그들은 또한 false를 반환합니다. 링크를 클릭하면 is는 "싫어함"또는 "좋아"를 보냅니다. 하지만 누군가가 해킹 할 수 있기 때문에 탈출 문자열을 사용해야한다고 나는 동의한다. –

관련 문제