PHP

PHP에서 `mysql_` 함수를 `mysqli` 함수로 변경할 때 주의할 점

0hee 2024. 6. 25. 11:59

PHP에서 `mysql_` 함수를 `mysqli` 함수로 변경할 때 주의할 점은 다음과 같습니다:

1. 연결 방법:
   - `mysql_connect` 대신 `mysqli_connect`를 사용합니다.
   - 예: `$conn = mysqli_connect($host, $user, $password, $database);`

2. 쿼리 실행:
   - `mysql_query` 대신 `mysqli_query`를 사용합니다.
   - 예: `$result = mysqli_query($conn, $query);`

3. 결과 처리:
   - `mysql_fetch_assoc` 대신 `mysqli_fetch_assoc`를 사용합니다.
   - 예: `while($row = mysqli_fetch_assoc($result)) { ... }`

4. 에러 처리:
   - `mysql_error` 대신 `mysqli_error`를 사용합니다.
   - 예: `echo mysqli_error($conn);`

5. 객체 지향 방식:
   - `mysqli`는 객체 지향 접근 방식을 지원합니다.
   - 예: `$mysqli = new mysqli($host, $user, $password, $database);`
   - 쿼리 실행: `$result = $mysqli->query($query);`
   - 결과 처리: `while($row = $result->fetch_assoc()) { ... }`

6. 문자열 이스케이프:
   - `mysql_real_escape_string` 대신 `mysqli_real_escape_string`를 사용합니다.
   - 예: `$safe_string = mysqli_real_escape_string($conn, $unsafe_string);`

7. Prepared Statements:
   - `mysqli`의 가장 큰 장점 중 하나는 Prepared Statements를 지원한다는 것입니다. 이는 SQL 인젝션 공격을 방지하는 데 유용합니다.
   - 예:
     ```php
     $stmt = $mysqli->prepare("INSERT INTO table (column) VALUES (?)");
     $stmt->bind_param("s", $value);
     $stmt->execute();
     ```

8. 트랜잭션 관리:
   - `mysqli`는 트랜잭션을 지원합니다.
   - 예: `$mysqli->begin_transaction(); ... $mysqli->commit();`

9. 기타 주의사항:
   - `mysql_` 함수들은 비동기 작업을 지원하지 않지만, `mysqli`는 비동기 쿼리를 지원합니다.
   - `mysqli`를 사용할 때는 MySQL 서버의 버전과 호환성을 확인해야 합니다.

기존의 `mysql_` 함수를 `mysqli`로 변경할 때는 코드의 구조를 재검토하고, 새로운 함수의 특성을 이해하는 것이 중요합니다. 이를 통해 보다 안전하고 효율적인 데이터베이스 작업을 수행할 수 있습니다.