본문 바로가기
MySql

MySQL (PHP / MYSQL) mysql_real_escape_string이 작동하지 않음

by 베이스 공부 2020. 12. 4.
반응형

최근에 특정 문자열을 삽입 할 때 INSERT INTO가 제대로 작동하지 않는 문제가 발생했습니다. 원인은 내 코드를 엉망으로 만드는 아포스트로피가 포함 된 문자열이라는 것을 발견했습니다. 이를 해결하기 위해 mysql_real_escape_string () 을 사용하려고했지만 아무 일도하지 않습니다. 나는 모든 "위험한"특수 문자 앞에 \를 삽입해야한다고 읽었지만, mysql_real_escape_string () 의 결과를 에코하면 이전과 이후에 동일한 문자열이 표시되고 \ s가 표시되지 않습니다. How do I fix this? 여기 내 코드가 있습니다 ...

<?php 

include "connect.php";  //connect.php connects to the database.

mysql_real_escape_string($_POST['username']);
mysql_real_escape_string($_POST['password']);
mysql_real_escape_string($_POST['sdNamer']);
mysql_real_escape_string($_POST['sdTrunk']);
//$_POST['username'] and the rest is the data entered by the user. 
$username = $_POST['username'];
$password = $_POST['password'];
$sdName = $_POST['sdNamer'];
$sdTrunkest = $_POST['sdTrunk'];

$sql = "INSERT INTO users (username, password, user_bio, starterDeck, Trunk) VALUES ('$username', '$password', 'User', '$sdName', '$sdTrunkest')";
//INSERT INTO won't work, because $sdTrunkest has string that contains an apostrophe, and mysql_real_escape_string isn't doing anything about it.
mysql_query($sql); 
exit("result_message=Success");
?>

 

해결 방법

 

mysql_real_escape_string () 은 수정 된 문자열을 반환하지만 해당 문자열로 아무 작업도 수행하지 않습니다. 본질적으로 사용하지 않는 mysql_real_escape_string () 입니다. 수정되지 않은 원래 값 대신 반환 된 값을 사용합니다.

$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
// etc...

또한 부수적으로 코드에 두 가지 더 심각한 문제가 있습니다.


 

참조 페이지 https://stackoverflow.com/questions/24532487

 

 

반응형

댓글