2012-04-25 6 views
0

효과적으로, 내가 무엇을 시도하고하는 MySQL에이 문자열 과 같은 문자열을 입력입니다PHP에서 MySQL로 어떻게 특수 문자를 입력 하시겠습니까?

fill:#0000ff;fill-rule:evenodd;stroke:#000000;stroke-width:1px; 
stroke-linecap:butt;stroke- linejoin:miter;stroke-opacity:1 

MySQL은 나를 사용하여 필드에 문자열을 삽입 할 수 있습니다 (이 읽기 쉽도록 두 가지로 만들어 한 줄은입니다) phpMyAdmin 및 phpMyAdmin을은 (읽기 쉽도록 두 가지로 만들어 다시 한 줄)으로 필드를 추가 : 나는

을 다음과 같이 내 코드에 필드 목록 부분에 추가하려고 시도

내 PHP 코드와
('fill:#0000ff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke- 
linecap:butt;stroke-linejoin:miter;stroke-opacity:1'' in ''field list') 

$rectangle_array[$rstyle] = $rectangle_array[$rstyle] . "' in ''field list'"; 
$mysql_rectangle_table_entry = "INSERT INTO $mysql_table VALUES 
           ($rectangle_array[$rstyle], 'rect', 
           $rectangle_array[$rid], $rectangle_array[$rwidth], 
           $rectangle_array[$rheight], $rectangle_array[$rx], 
           $rectangle_array[$ry])"; 
$run = mysql_query($mysql_rectangle_table_entry) or die(mysql_error()); 

그리고 코드를 실행하면 다음 오류가 발생합니다.

SQL 구문에 오류가 있습니다. 오른쪽 구문이 ': # 0000ff; 채우기 - 규칙 : evenodd; 스트로크 : # 000000; 스트로크 - 폭 : 1px; 스트로크 - 라인 캡 : 버트; s'라인에서 사용하도록 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오.

이 작업을하려면 어떻게해야합니까?

+6

[mysql_real_escape_string] (http://php.net/mysql_real_escape_string). 또한, 각 값은 문자열이므로 작은 따옴표로 묶어야합니다 (필자 생각). – drew010

+4

mysql_query 사용을 중지하고 시작을 위해 문자열을 함께 mashing하여 SQL 쿼리를 작성하십시오. http://bobby-tables.com/ – Quentin

+1

'$ mysql_rectangle_table_entry;'를 출력하고 구문 오류를 찾거나 여기에 게시하십시오. – miro

답변

2

...

당신은 삽입 전에 MySQL의 특수 문자를 탈출 mysql_real_escape_string()를 사용할 수 있습니다. 예를 들어

:

$sql = "INSERT INTO my_table (string_column) VALUES ('" . mysql_real_escape_string($string) . "')"; 

또 다른 옵션은 PHP의 MySQLi 또는 PDOPrepared Statements을 사용하는 것입니다.

+1

공유 할 Downvoter 신경? –

+0

필자는 투표를하지는 않았지만이 회신을 upvote로 회신 할 예정입니다. 그 이유는 문자열을 이스케이프 처리하는 질문의 목적이 정확하기 때문입니다. 그러나 OP가 알려지지 않은 최종 사용자의 입력 인 경우 OP가 취약점을 인식해야합니다. [PDO ] (http://php.net/manual/en/book.pdo.php) ftw – TerryProbert

1

prepared statements 또는 mysql_real_escape_string 중 하나를 사용하여 INSERT를 손상시킬 수있는 특수 문자를 이스케이프하고 싶을 수 있습니다.

코멘트에서 언급 한 바와 같이
관련 문제