php sql 데이터 존재여부 확인 (PDO 사용)
조회수 1580회
안녕하세요, php 입문자입니다.
PHP Data Object 를 이용해서 유저 테이블에 특정 이름을 가지고있는 유저가 있다면 유저가 있다고 출력하고 아니면 없다는 메세지를 출력하고 싶어서
$pdo = new PDO("mysql:host=localhost:3306;dbname=userdb;charset=utf8;", "(계정 이름)", "(암호)");
/*
ㆍㆍㆍ
*/
$sql = "SELECT * FROM user WHERE name = '닉네임'";
$result = $pdo->query($sql);
if (empty($result)) {
echo "있음";
} else {
echo "없음";
}
/*
ㆍㆍㆍ
*/
대충 이런식으로 작성했더니 닉네임
을 가지고 있는 유저가 없다고 "없음" 메세지가 나오는게 아닌 오류 메세지가 나옵니다. 혹시 empty 함수를 이용한 방법 말고 다른 방법이 있을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
PDO::query()
자체는 이렇게 사용하시면 됩니다.$sql = "SELECT * FROM user WHERE name = '닉네임'"; $result = $pdo->query($sql); // query() 메소드는 실패시 데이터, 성공시 FALSE 가 리턴됨 echo $result === FALSE ? '없음' : '있음';
하지만 변수 바인딩을 통한 인젝션 공격 방지, 실제 데이터 조회 효율성 증진 등을 위해 보통 이렇게 합니다.
// 사용자 입력이 강제 주입되지 않은 쿼리문을 준비함 $query = $pdo->prepare('SELECT id, created_at FROM user WHERE name = :username'); // 준비한 쿼리문에 값을 안전히 연결하고 실행 $query->execute([':username' => '닉네임']); // 실행된 쿼리 결과를 다 불러오지 않고 하나씩 꺼내서 사용 while ($row = $query->fetch()) { echo $row['id'].' 사용자 가입일: '.$row['created_at']; }
댓글 입력