2014-11-24 5 views
-1

최근에 PHP를 5.4로 업데이트했으며 기존 코드에서 오류가 발생하기 시작합니다. 나는 내용이 내가 지금처럼 MySQL의에 업데이트 할 :PHP를 사용하여 SQL 데이터베이스를 따옴표로 업데이트 할 수 없습니다.

It was therefore extremely fitting that the trip also included the release of 'Bunny', a juvenile 

내가 작업하는 데 사용한 코드 :

$upsql = "UPDATE webpg_tbl SET txt = '$_POST[txt]' WHERE id='$_POST[modify]'"; 

을 나는 그것이 구문 문제가 될 수 있습니다 생각을, 나는 두 번 추가 따옴표 및 "." 이렇게 같은 쿼리로 :

$upsql = "UPDATE webpg_tbl SET txt = '".$_POST[txt]."' WHERE id='".$_POST[modify]."'"; 

그러나 쿼리가 실행될 때 :

$result = mysql_query($upsql) or print mysql_error() ; 

내가 얻을 :

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 'Bunny', a juvenile green turtle rescued on the 4t' at line 3 

나는 그것이 문제가 발생 따옴표를 꽤 확신합니다. 따옴표를 허용하도록 PHP에서 사용할 수있는 것이 있습니까? 내가 작업중인 코드가 오래된 것임을 알고 있습니다. 그러나 시간/예산 제약으로. 나는 당분간 그것을 일하도록 강요합니다.

+2

Y 쿼리를 입력하지 않으시겠습니까? 마지막 질문 중 하나는 [준비된 진술에 대한] (http://stackoverflow.com/questions/26037684/php-prepare-statement-getting-errors-having-a-query-inside-a-while-loop) – mario

+0

@ 마리오 나는 내가 무엇을 물었는지 잘 알고있다. 불행히도 전체 웹 사이트를 재실행하고 준비된 진술을 사용할 시간이나 예산이 없습니다. –

+0

@AkiraDawson : 검색 및 바꾸기를 사용하여 준비된 문으로 변환 할 수 있으며, 몇 가지 수작업으로 문제를 해결할 수 있습니다. – siride

답변

2

적어도 코드는 escape이어야합니다. 그리고 코드를 이스케이프하면 문제도 해결됩니다. PDO를 사용하고 변수를 바인딩하는 것이 가장 이상적입니다. 그러나 PDO를 사용하지 않는 경우 코드를 이스케이프 처리해야합니다.

+0

나는 PDO에 가고 싶지만 고객과 거래하기를 원할 때가있다. 때때로 시간을 낭비하는 예산 제약이있다. 나는 도망 갔고 효과가 있었다. 그 기능을 완전히 잊었습니다. 도와 주셔서 감사합니다. 정말 피클에서 날 잡았어! –

+0

멋진데. 문제는 $ upsql을 반향 출력 한 경우 $ _POST [ 'txt']가 삽입 된 문자열이 아닌 SQL이라고 생각한다는 의미의 값의 인용을 보았을 것입니다. SET TEXT = " '. $ _POST ['txt '].'"대신에 $ _POST [ 'txt']에 "대신"가 포함되어 있으면 SQL이 손상 될 수 있습니다. –

관련 문제