## 編寫一個臨時PHP頁面用來處理數據
在項目中遇到一些數據要進行初始化,由于數據量較大(2W+),人工處理太浪費時間,所以編寫了一段代碼來進行處理。
### 功能簡述
1. 只是連下數據庫,輸出一下數據腳本
2. 用框架太繁瑣,還要配置
3. 需要在頁面上輸出一些調試內容
### 知識點
1. **響應頭**:默認PHP環境下的編碼是**iso-8859-1**,如果直接輸出中文,則會出現亂碼;此外如果沒有定義文本類型的話,那么瀏覽器可能不能識別html標簽。
2. **mysqli的使用**:這里應該沒什么問題,就是直接寫mysqli的裸代碼不熟練;另外在循環結果集的時候,php提供了N多個方法,其實用的多的大概就只有**fetch_assoc**和**fetch_object**了。
3. **超時問題**:一開始的時候想著直接在代碼里面執行UPDATE腳本的,要考慮超時問題,不過后來改成直接輸出,所以這部分就跳過了。
4. **編碼轉換**:由于數據庫的編碼和PHP文件的編碼可能不一致,所以需要人為設置一下操作數據庫時的編碼格式。
### 實現代碼
```
<?php
header('Content-Type:text/html;charset=utf-8'); // 響應頭
$db_host = "172.16.13.33:3306"; // 數據庫地址
$db_user = "develop"; // 賬號
$db_psw = "develop"; // 密碼
$db_name = "awsdev"; // 數據庫
$mysqli = new mysqli($db_host, $db_user, $db_psw, $db_name);
if (!$mysqli) {
echo "數據庫連接失敗";
}
/* 設置數據庫查詢編碼為utf8 */
if (!mysqli_set_charset($mysqli, "utf8")) {
printf("Error loading character set utf8: %s\n", mysqli_error($mysqli));
exit();
} else {
// printf("Current character set: %s\n", mysqli_character_set_name($mysqli));
}
// 查詢腳本
$query="SELECT * FROM `bo_act_asset_sign`";
$result = $mysqli->query($query);
if ($result) {
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
// 邏輯處理以及腳本輸出
}
}
} else {
echo "查詢失敗";
}
// 空間釋放以及連接斷開
$result->free();
$mysqli->close();
```