2011-08-31 4 views
0

post mysql 쿼리를 수행하는 PHP 파일에 입력 값을 전달하기 위해 사이트에 대해 아주 기본적인 주석 처리 함수를 작성하고 있습니다. 이 통과이상한 POST 데이터 정크가 반환되었습니다.

// AJAX URL ENCODING 
$("#add").click(function() { 
     // POST COMMENT FORM VALUES 
     var ajaxOpts = { 
     type: "post", 
     url: "includes/addComment.php", 
     data: "&author=" + $("#author").find("input").val() + "&email=" + $("#email").find("input").val() + "&comment=" + $("#leaveComment").find("textarea").val() + "&parent=<?php echo $vid_id; ?>", 
     success: function(data) { 

      // IMMEDIATE DISPLAY 
      // Not relevant to this problem. 

      // CLEAR TEXTAREA FOR NEXT COMMENT 
      $("textarea").val(''); 
     } 


     }; 

    $.ajax(ajaxOpts); 
}); 

는 addcomment.php하기 :

require('connection.php');  

//get POST data 
$name = mysql_real_escape_string($_POST["author"]); 
$email = strtolower(md5(trim(mysql_real_escape_string($_POST["email"])))); 
$comment = mysql_real_escape_string($_POST["comment"]); 
$time = Date ('c'); 
$parent = trim(mysql_real_escape_string($_POST["parent"])); 


//add new comment to database 
mysql_query("INSERT INTO comments VALUES(' $name ',' $email ',' $comment ', ' $time ', ' $parent ')"); 

모든 것이 잘 작동하여 mysql_query 어떤을 삽입 결국하지 않는 것을 제외하고 다음과 같이

$ 아약스 부분은 값을 내 데이터베이스에 저장하십시오. 파고의 조금 후 나는이 발견 : ':'(?) 정크의 비트 데이터가 모든 것을 던지고이 때문에

screen grab

그래서 내가 있으리라 믿고있어 내 쿼리 앞서가는되지 않는 이유는 무엇입니까?

나는이 잘못된 ':'이 어디서 왔는지 알아 내려고 노력하고 있습니다. 누구나 아이디어가 있습니까?

피씨 -이 질문의 길이에 대한 사과, 가능한 한 범인을 좁히려 고 노력했습니다.

답변

2

&을 (를) & (으)로 앞면에서 제거하면 어떻게됩니까?

는 일반적으로 첫 번째 데이터 필드는 다른 사람이 언급 한대로이 데이터베이스 열 이름을

or die (mysql_error()) 

하고 일반적으로 좋은 연습을 환영 할 것 또한 &

data: "&author=" 

이 없습니다 삽입시 테이블 구조를 변경하면 insert 문을 깨뜨릴 위험이 있습니다.

insert into (colname1, colname2) values ('value1', 'value2') 
+0

이것으로 해결되었습니다! 건배, 정말 감각이 있습니다 ... – James

0

콜론이 실제로 있는지 보려면 print_r ($ _ POST)을 사용하십시오. 둘째, 그것을 디버깅하는 동안 쿼리의 끝에

or die (mysql_error()) 

을 던져 다치게하지 않을 것입니다. 두 가지가 없으면 디버깅하기가 어렵습니다.

3

자신을 인코딩하는 URI를 수행 할 필요가 없습니다. jquery의 문서를 읽고, 보낼 '데이터'는 map/json이 될 수 있습니다.

http://api.jquery.com/jQuery.post/

변화

data: "&author=" + $("#author").find("input").val() + "&email=" + $("#email").find("input").val() + "&comment=" + $("#leaveComment").find("textarea").val() + "&parent=<?php echo $vid_id; ?>" 

{ author: 'something',email:'test' } 

이상의 전문적으로

$("#testform").serialize() //here #("#testform") stands for a '<form>' tag 

그리고 문제를 복잡하게하지 않으려 고, 스타로 몇 가지 간단한 함수를 사용하여 더 많은 echo() 및 alert()를 사용하여 디버그하십시오.

+0

건배! 수백만 배를 단순화합니다! – James

0

2 일 :

  • ajaxOpts 변수가 범위를 벗어나, 당신은 (ajaxOpts가 정의되지 않은)
  • 당신이 예에서, 당신이 그리워}) 오류이있을 것이다; 결국 PHP 스크립트가 작동하는지 확인하기 전에 JS 유효성을 검사해야합니다. JS 오류가 있으면 ajax 호출이 호출되지 않습니다.
+0

죄송합니다! 그냥 내 코드에 붙여 넣을 때 나는 그것을 잘라 냈다. 편집 됨. – James

관련 문제