2011-02-12 3 views
2

이 내가삽입 쿼리 문제는

mysql_query(insert into table1 set saltval = 'Y'Z' where uid ='1'); 

하지만 난 Y'Z입니다 필드 saltval의 값 becaues 작동하지 않습니다 다음 삽입 쿼리를 사용하고 간단한 하나입니다. 내 질문은이 값을 문자열로 간주하는 방법입니다.

답변

5

작은 따옴표를 백 슬래시로 이스케이프 처리해야합니다.

mysql_query("insert into table1 set saltval = 'Y\'Z' where uid ='1'"); 

그러나 SQL은 유효하지 않습니다 ... 업데이트 하시겠습니까? Insert 문에는 where가 없습니다. 값은 사용자의 입력에서 오는 경우
http://www.php.net/manual/en/function.mysql-real-escape-string.php

2
$string = mysql_real_escape_string("Y'Z"); 
mysql_query("insert into table1 set saltval = '{$string}' where uid ='1'"); 
2

항상 이것에 대한 mysql_real_escape_string() 기능을 사용하여 입력이 사용자의 경우, 당신은는 mysql_real_escape_string()를 사용한다, 다른 답변에서 언급 한 바와 같이

$query="insert into table1 set saltval = '".mysql_real_escape_string($InputVal)."' where uid ='1'"; 

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

1

다음에 백 슬래시를 추가해야합니다. 문자열을 SQL 구문 규칙에 맞추기위한 특정 문자.
동적으로 쿼리를 작성한다고 가정하면 PHP는이를 위해 특별한 이스케이프 기능을 가지고 있으므로 쿼리에는 인용 부호가 붙은 모든 문자열 (예외 없음)을 에 사용해야합니다.
그래서,이 같은 코드를 작성 :

$salt = "Y'Z"; 
$id = 1; 

$salt = mysql_real_escape_string($salt); 
$id = mysql_real_escape_string($id); 

$sql = "update table1 set saltval = '$salt' where uid ='$id'"; 

mysql_query($sql) or trigger_error(mysql_error()." ".$sql); 

가 안전하고 결함 허용

를 만들기 위해