2011-02-16 4 views
0

나는 내 코드에 데이터베이스 호출을 많이 가지고있다. 그 중SQL 쿼리에 어떤 문제가 있습니까?

하나는 다음과 같이이다 :

mysql_query("INSERT INTO coupons (id, retailerName, description, savingsDetails, pictureURL, rating, qrPicture, zipCode, dateAdded, dateExp) VALUES ('$newID', '$retailerName', '$description', '$savingsDetails', '$pictureURL', '0', '$qrPicture', '$zipCode', '$dateAdded', '$dateExp')"); 

다른 데이터베이스의 모든 완벽하게 작품을 호출, 그러나 이것은 단순히 테이블에 데이터를 기록하지 않습니다. 그게 뭐가 잘못 됐어?

+1

쿠폰 사이트가 하나 더 있습니다. 오. – zerkms

+1

당신은 SQL 주입 취약점이 있습니다. – SLaks

답변

4

mysql 쿼리에서 반환을 확인하십시오.

$result = mysql_query($query); 
if ($result === false) { 
    // Prints the query and the mysql error to help you find the problem. 
    die($query.'<br/>'.mysql_error()); 
} 

쿼리에 문제가있는 경우 그 내용을 알려줍니다.

mysql_query() 무언가를 반환하지 않는 쿼리의 경우 성공하면 true를 반환하고 오류가 발생하면 false를 반환합니다.

http://php.net/manual/en/function.mysql-query.php

mysql_query() 생산에 사용하여, 당신은 오류에 정상적으로 반환 값 종료를 확인하고 당신이 어떤 문제를 해결하는 데 도움 수 있도록 바람직를 기록해야합니다.

또한 사용자 입력을 사용하는 쿼리를 수행 할 때 mysql_real_escape_string()을 사용하여 SQL 주입을 방지하고 작은 따옴표가 포함 된 입력을 보호해야 현재 쿼리가 중단됩니다.

http://php.net/manual/en/function.mysql-real-escape-string.php

1

확인 쿼리에서 반환 값은 무슨 일이 일어나고 있는지 알아보십시오 - 당신이 오류를 얻을 수없는 경우

$result = mysql_query("INSERT INTO coupons (id, retailerName, description, 
       savingsDetails, pictureURL, rating, qrPicture, zipCode, dateAdded, 
       dateExp) VALUES ('$newID', '$retailerName', '$description', 
       '$savingsDetails', '$pictureURL', '0', '$qrPicture', '$zipCode', 
       '$dateAdded', '$dateExp')"); 

if($result) 
{ 
    // Your query succeeded 
} 
else 
{ 
    // Your query failed due to some error 
    die(mysql_error()); 
} 
0

당신은 단지 mysql_query("INSERT INTO coupons (id, retailerName, description, savingsDetails, pictureURL, rating, qrPicture, zipCode, dateAdded, dateExp) VALUES ('$newID', '$retailerName', '$description', '$savingsDetails', '$pictureURL', '0', '$qrPicture', '$zipCode', '$dateAdded', '$dateExp')") or die(mysql_error());

으로 이것을 쓸 수 있습니다 성공했다는 의미입니다. 오류가 발생하면 mySQL에서 직접 오류가 발생합니다 (자세한 내용을 설명해야합니다).

0

문제를 찾는 또 다른 방법은 sql 쿼리를 로깅하여 쿼리가 런타임에 어떻게 보이는지 확인하는 것입니다.

$str = "INSERT INTO coupons ..."; 

echo $str; 

그런 다음 해당 쿼리를 데이터베이스에 직접 시도하면 올바르지 않은 것을 얻을 수 있습니다.

관련 문제