2010-04-03 4 views
0

아래의 간단한 쿼리가 작동하지 않습니다. 왜 그런가? 세 변수를 에코하면 올바른 값이 반환되므로 변수가 있다는 것을 알 수 있습니다. 사전에쿼리가 작동하지 않습니다.

감사합니다,

$comment = $_POST['comment']; 
$uid = $_POST['uid']; 
$subid = $_POST['submissionid']; 


echo $comment; 
echo $uid; 
echo $subid; 

mysql_connect("mysqlv12", "username", "password") or die(mysql_error()); 
mysql_select_db("database") or die(mysql_error()); 


$query = sprintf("INSERT INTO comment VALUES (NULL, '%s', '%s', '%s', NULL, NULL)", $uid, $subid, $comment); 

mysql_query($query); 
+2

mysql_query ($ query) 또는 die (mysql_error()); // 귀하의 오류 – Leo

+0

mysql_error가 무엇인지 말해 주시면 누군가가 대답을하리라고 확신합니다. 아마도 값의 수가 잘못되었거나 하나가 null 일 수 없다는 것입니다. –

+0

ID가 숫자 인 경우 ID를 % d (으)로 처리하고 ''없이이를 삽입하면 좋은 습관을 유지할 수 있습니다 – Ben

답변

1

쿼리가 표면에 잘 보인다. 삽입하는 값은 무엇입니까? 그들 중 누구도 작은 인용문을 가지고 있습니까? 내가 코멘트 필드가 그럴 가능성이 가장 큰 범인이라고 생각합니다. 귀하의 코드는 현재 그대로 SQL 주입에 완전히 취약합니다. 다음과 같이 보안의 최소한을 위해, 모든 변수 할당을 교체해야합니다

$comment = $_POST['comment']; 

이 또한 부수적으로 실패 쿼리의 원인이 될 수있는 작은 따옴표 처리됩니다

$comment = mysql_real_escape_string($_POST['comment']); 

된다 . 쿼리가 성공했을 경우뿐만 아니라, 당신은 확인해야합니까 :

mysql_query($query) or die (mysql_error()); 

어떤 문제가 있다면 바로 당신에게 말할 것이다 (SQL 구문 오류, 데이터베이스 서버는 연결에 실패, 사망 등)

관련 문제