2011-04-19 5 views
0

현재 데이터베이스의 특정 레코드를 업데이트하려고 시도하고 있습니다. 그러나 구문을 완전히 확인했지만 크롬이 어딘가에 잘못 표시했다.MYSQL 업데이트 쿼리 문법 문제

죄송합니다,이하던 : 어떤 조언을 크게 나는 그것이 문제가 있다면 확인하는 변수없이 쿼리를 시도했지만 여전히 날 오류가 비명을

$title = $_POST["title"]; 
$alttext = $_POST["alttext"]; 
$description = $_POST["description"]; 
$price = $_POST["price"]; 
$id = $_POST["ID"]; 
$insertQuery = "UPDATE cmsproducts SET Title = '$title', Alt_Text = '$alttext', Source = '$target_path', Description = '$description', Price = $price WHERE ID = $id"; 

// Save the form data into the database 
if ($result = $connector->query($insertQuery)){ 

// It worked, give confirmation 
echo '<center><b><span style="color: #FF0000;">Product added to the database</span></b></center><br /><br />'; 

}else{ 

// It hasn't worked so stop. Better error handling code would be good here! 
echo('<center>Sorry, there was an error saving to the database</center>'); 
echo "<center><b>File Name:</b> ".$target_path."<br/>"; 
die(mysql_error()); 


} 

을 감상 할 수있다

데이터베이스에 저장하는 중 오류가 발생했습니다. SQL 구문에 오류가 있습니다. 'test, Source = ../images/Pictures /,'근처에서 사용할 올바른 구문에 대해서는 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. 1 행의 설명> 테스트의 테스트 이미지입니다.

+0

$ insertQuery 변수를 반향시키고 최종 쿼리를 확인하십시오. 뭔가가 비어 있거나 형식/인코딩 문제가있을 수 있습니다. (POST 입력을 확인하지 않으면 보안 문제입니다.) – Alfabravo

+0

DB 스키마가 어떻게 생겼는지뿐만 아니라 "게시"변수에서 무엇이 전달되는지 알려줄 때까지는 도움을 줄 수 없습니다. SQL 인젝션을 막아야합니다! – ohmusama

+0

이것은 또한 보안상의 문제입니다. SQL 주입 공격을 막기 위해 mysql_real_escape_string 또는 다른 방법을 사용하는 것이 좋습니다. –

답변

3

항상 이스케이프 처리합니다. 사용자 입력 (mysql_real_escape_string) 또는 PDO를 사용하고 매개 변수를 지정하십시오. $alttext 변수에 따옴표 나 다른 특수 문자가 들어있는 것으로 보입니다. 예를 들어,

$title = mysql_real_escape_string($_POST["title"]); 
$alttext = mysql_real_escape_string($_POST["alttext"]); 
$description = mysql_real_escape_string($_POST["description"]); 
$price = mysql_real_escape_string($_POST["price"]); 
$id = mysql_real_escape_string($_POST["ID"]); 
$insertQuery = "UPDATE cmsproducts SET Title = '$title', 
    Alt_Text = '$alttext', Source = '$target_path', 
    Description = '$description', Price = '$price' WHERE ID = '$id'"; 
1

그것은 당신이 내부에 작은 따옴표를해야합니다 열 Description로 따옴표를 이스케이프하지 않을 것 같다. 따옴표를 이스케이프하려면 mysql_real_escape_string을 사용하십시오.

+0

mysql_real_escape_string을 추가하고 유효성 검사를 추가 한 후 잘못된 사이트 LOL에 업로드했음을 알게되었습니다. 액세스 테스트 서버가 아닌 실제 테스트 서버에 업로드했습니다. 항상 가장 간단한 것입니다 ... –

+0

:) 작업 부하가있을 때 발생합니다 !! 재미있게 보내라. –