반응형
내 변수에서 리소스 ID를 얻지 못하도록 MySQL 가져 오기를 사용해야한다는 것을 알고 있지만 그 방법을 도와 줄 수 있는지 궁금했습니다. 여러 튜토리얼에서 그들이 루프를 사용하는 것을 보았지만 하나의 문자열을 변수로 선택하고 싶습니다. 내가 가진 코드는 다음과 같습니다.
$img = mysql_query('SELECT pname FROM photos WHERE pphotoid=21');
echo $img;
기본적으로 $ img
가 현재 표시되는 Resource id # 3
이 아닌 데이터베이스의 문자열을 포함하기를 원합니다. 또한 내가 작성한 내용이 SQL 주입에 취약합니까?
MySQL을 배우면 도움이 될 것입니다!
해결 방법
$handle = mysql_query('SELECT pname FROM photos WHERE pphotoid=21');
$row = mysql_fetch_row($handle);
echo $img[0];
이 코드는 당신을 위해 작동합니다.
SQL 주입을 방지하려면 mysql_escape_string ()과 같은 이스케이프 함수를 사용해야합니다. 또한 입력 내용을 확인하고 유효성을 검사해야합니다.
여기에서 더 많은 것을 배울 것입니다
또한 mysql_ *는 PHP 5.5.0에서 더 이상 사용되지 않으며 향후 제거 될 예정이므로 PDO를 사용하는 것이 좋습니다.
여기에 PDO로 db에 연결하는 방법을 배우는 튜토리얼이 있습니다.
PDO의 코드 (db에 연결되어 있다고 가정)는 다음과 같습니다. $ id = intval (21); //이 코드는 무의미하지만 $ _GET을 통해 21을 얻으면 정수로 캐스팅하고 주입을 방지합니다.
$stmt = $db->prepare("SELECT pname FROM photos WHERE pphotoid=?");
$stmt->execute(array($id));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo $row['pname'];
참조 페이지 https://stackoverflow.com/questions/16088810
반응형
'MySql' 카테고리의 다른 글
MySQL mysql은 타임 스탬프에서 월을 가져 오지 않습니다. (0) | 2021.01.04 |
---|---|
MySQL에서 문자를 UTF8로 변환 (Ã ©에서 é로) (0) | 2021.01.04 |
MySQL Java MySQL은 데이터베이스에 값이 있는지 확인합니다. (0) | 2021.01.04 |
MySQL 단일 SQL 문에 대한 열 헤더 출력을 억제하려면 어떻게해야합니까? (0) | 2021.01.04 |
MySQL 저장 프로 시저에서 문자열 목록을 전달하는 방법은 무엇입니까? (0) | 2021.01.04 |
댓글