2013-11-23 3 views
0

나는 방금 magic_quotes_gpc를 배웠습니다 (많은 저의 억울함에). 나는 그것을 꺼냈다.mysqli_real_escape_string이 작동하지 않습니다.

내 데이터베이스 연결은이 쿼리 전에 수행됩니다. 나는 다음과 같습니다 :

$subject = mysqli_real_escape_string($link, $_POST["subject"]); 
$body = mysqli_real_escape_string($link, $_POST["body"]); 
$id = mysqli_real_escape_string($link, $_POST["id"]); 


mysqli_query($link, "UPDATE press SET press_title = '$subject', press_release = '$body' WHERE press_id = '$id'") or die(mysqli_error($link)); 

위의 마술 따옴표를 사용하면 정상적으로 작동합니다. 일단 그것을 해제하면 작은 따옴표로 작업을 방해 할 수 있습니다 (따옴표에 MySQL 구문 오류가 있음). 나는 그 개념을 이해할 줄 알았지 만 나는 뭔가를 놓치고 있어야만한다. 누군가 내가 잘못하고있는 것을 설명 할 수 있습니까?

UPDATE

오류는 MySQL이 뱉어 : 당신은 당신의 SQL 구문에 오류가 있습니다; 근처 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인하는 선에서 '그녀가 말한이야'1

업데이트 # 2 여기 echo'd 쿼리입니다 :

UPDATE press SET press_title = \'That\'s what she said\', press_release = \'That\'s what she said again!\' WHERE press_id = \'513\' 
+0

구문 오류가 무엇입니까 : 지표화 된 쿼리를 사용? –

+0

마지막 SQL 쿼리 문자열도 표시하십시오. – mario

+0

@ThorpeObazee 원래 게시물을 업데이트했습니다. – thebarless

답변

1

$stmt = mysqli_prepare($link, "UPDATE press SET press_title = ?, press_release = ? WHERE press_id = ?") or die (mysqli_error($link)); 
mysqli_stmt_bind_param($stmt, "ssi", $_POST['subject'], $_POST['body'], $_POST['id']); 
mysqli_stmt_execute($stmt); 

Manual

+0

"ssi"는 무엇을합니까? – thebarless

+1

매개 변수의 유형을 string, string 및 integer로 지정합니다. 설명서에서 분명하지 않습니까? – Barmar

관련 문제