반응형
최근에 특정 문자열을 삽입 할 때 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
반응형
'MySql' 카테고리의 다른 글
MySQL mysql의 날짜 필드와 일과 월만 비교 (0) | 2020.12.04 |
---|---|
MySQL 열을 오른쪽으로 조정하는 방법 (0) | 2020.12.04 |
MySQL Java ArrayList를 MySQL 테이블에 삽입하는 방법은 무엇입니까? (0) | 2020.12.04 |
MySQL OR 및 AND와 where 절을 사용한 Laravel eloquent SQL 쿼리 (0) | 2020.12.04 |
MySQL 2D 배열로 결과 집합 (0) | 2020.12.04 |
댓글