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