2012-03-22 2 views
0

IM이 오류를 얻기 :은 MySQL의 구문 오류

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'release (project_id, start_date, end_date, predicted_velocity, release_title,)' at line 1

내 PHP 파일 :

<?php 

include("../db_connect/connect.php"); 

$project_id = $_POST['project_id']; 
$release_title = $_POST['release_id']; 
$start_date = $_POST['start_date']; 
$end_date = $_POST['end_date']; 
$predicted_velocity = $_POST['predicted_velocity']; 

$query = "INSERT INTO release (project_id, start_date, end_date, predicted_velocity, release_title, ) VALUES ('" . $predicted_velocity . "','" . $release_title . "','" . $start_date . "','" . $end_date . "','" . $project_id . "', NOW())"; 
mysql_query($query) or die(mysql_error()); 

header("location: ../view-project.php?project_id=$project_id"); 

?> 

왜 어떤 아이디어가? 메신저 새로이!

+1

는 release_title 후 – RumpRanger

+2

좋은 SQL 주입 구멍을 마지막 쉼표를 제거합니다. 일단 SQL 구문 오류를 수정하면 코드를 강화하는 방법을 더 잘 배웁니다. –

+1

$ _POST 변수의 내용을 알지 못해서 도울 수 없으므로 $ query를 echo 할 수 있습니까? 그리고 부수적으로, SQL 쿼리를 작성하기 전에 변수에 대한 유효성 검사를하십시오! – Tchoupi

답변

1

당신은 고아 쉼표 결과, 누락 된 열 이름을 가지고있다.

, ) 

내가 MyColumnNOW() 기능에 의해 채워하기위한 것입니다 가정

, MyColumn) 

해야한다.

은 또한 당신의 값은 쿼리가 실패합니다 컬럼과 동일한 순서로 나열되지 않습니다.

여기에 문제를 요약 :

  1. 누락 된 열 이름
  2. 열 순서가 변수 순서를
  3. 코드와 일치하지 않는 쉼표 매달려
  4. 를 (열 수가 값의 수를 일치해야하는 것은) SQL injection이 적용됩니다 공격
  5. 사용자 입력에 대해 서버 측 유효성 검사가 수행되지 않습니다.
0

추가 쉼표 :

[..snip..] predicted_velocity, release_title, ) VALUES 
               ^--- here 
0

당신은 release_title 후 길 잃은 쉼표가 있습니다.

0

는 @john_allen 당신은 오류 메시지 "근처 '출시 (PROJECT_ID를 사용할 수있는 권리 구문,"도착했다 -. MySQL은 항상 구문 오류가 발생하는 예를 시작하기 때문에 즉, 흥미를

오류가 있었다면 단지 잘못된 쉼표 release_title 후, 다음의 MySQL에서 오류가 "근처 ') 값을 사용할 수있는 권리 구문 ..."했을 것이다. 이것은 오류이지만, MySQL 파서가 먼저 부딪히는 오류는 아닙니다.

이 뭔가 잘못 여기, 그리고 난 당신이 '해제'라는 테이블이없는, 또는 적어도 MySQL이 테이블은 '릴리스'당신이 그것을 제공 한 자격 증명을 사용하여 호출 찾을 수 없기 때문에이 생각 . 연결 문자열을 확인하십시오.