首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

MySQL PHP 擴展完整參考:資源類型、預定義常量與核心函數速查

     編輯:PHP 綜合知識

PHP 早期內建 mysql 擴展(PHP 7.0 移除)的官方文檔精簡版。現代開發請使用 mysqli 或 PDO_MySQL,本文僅供維護舊代碼參考。

資源類型

  • 連接資源:mysql_connect()/mysql_pconnect() 返回,標識與 MySQL 服務器的會話
  • 結果集資源:mysql_query() 成功返回,供 mysql_fetch_* 族函數遍歷

預定義常量

客戶端標記 (mysql_connect() 第 5 參數)

常量說明
MYSQL_CLIENT_COMPRESS壓縮協議傳輸
MYSQL_CLIENT_IGNORE_SPACE允許函數名後有空格
MYSQL_CLIENT_INTERACTIVE使用 interactive_timeout 替代 wait_timeout
MYSQL_CLIENT_SSLSSL 加密連接(需客戶端庫 4.x+,Win 版 PHP 綁定 3.23.x 不支援)

結果集獲取模式 (mysql_fetch_array() 第 2 參數)

常量返回結構
MYSQL_ASSOC關聯數組 ['col_name' => 'value']
MYSQL_NUM數字索引數組 [0 => 'value']
MYSQL_BOTH兩者合併(預設)

核心函數速查表(按功能分組)

連接管理

mysql_connect(host, user, pass, new_link, client_flags)  // 新連接
mysql_pconnect(...)  // 持久連接
mysql_close(link)    // 關閉
mysql_select_db(db, link)  // 選庫
mysql_ping(link)     // 檢查/重連

查詢執行

mysql_query(sql, link)           // 執行,返回結果集/布爾
mysql_unbuffered_query(sql, link) // 不緩存結果,節省記憶體
mysql_db_query(db, sql, link)    // 選庫並查詢(不推薦)
mysql_real_escape_string(str, link) // 轉義(注意:需連接上下文)

結果集遍歷

mysql_fetch_array(result, type)   // 關聯+數字
mysql_fetch_assoc(result)         // 僅關聯
mysql_fetch_row(result)           // 僅數字
mysql_fetch_object(result)        // 對象
mysql_fetch_field(result, offset) // 字段元數據對象
mysql_data_seek(result, row)      // 移動內部指針
mysql_num_rows(result)            // 行數
mysql_num_fields(result)          // 列數
mysql_free_result(result)         // 釋放記憶體

字段元數據

mysql_field_name(result, index)
mysql_field_type(result, index)
mysql_field_len(result, index)
mysql_field_flags(result, index)
mysql_field_table(result, index)
mysql_field_seek(result, offset)

事務/狀態/信息


mysql_affected_rows(link)   // 影響行數
mysql_insert_id(link)       // 自增ID
mysql_errno(link)           // 錯誤碼
mysql_error(link)           // 錯誤訊息
mysql_info(link)            // 最近查詢信息
mysql_stat(link)            // 服務器狀態
mysql_get_server_info(link) // 版本
mysql_get_host_info(link)
mysql_get_proto_info(link)
mysql_get_client_info()

資料庫/表/字段列表

mysql_list_dbs(link)
mysql_list_tables(db, link)
mysql_list_fields(db, table, link)
mysql_list_processes(link)
mysql_db_name(result, row)
mysql_tablename(result, row)
mysql_result(result, row, field)

經典範例:連接→查詢→輸出→清理

<?php
$link = mysql_connect('localhost', 'user', 'pass') or die('Connect failed: ' . mysql_error());
mysql_select_db('mydb') or die('Select db failed: ' . mysql_error());

$query = 'SELECT id, name, email FROM users WHERE status = 1';
$result = mysql_query($query) or die('Query failed: ' . mysql_error());

echo "<table>\n";
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo "\t<tr>\n";
    foreach ($row as $val) {
        echo "\t\t<td>" . htmlspecialchars($val) . "</td>\n";
    }
    echo "\t</tr>\n";
}
echo "</table>\n";

mysql_free_result($result);
mysql_close($link);
?>

遷移指南:mysql → mysqli / PDO

舊函數mysqli (面向對象)PDO
mysql_connect()new mysqli()new PDO()
mysql_query()$mysqli->query() / prepare()$pdo->query() / prepare()
mysql_fetch_array()$result->fetch_assoc()$stmt->fetch(PDO::FETCH_ASSOC)
mysql_real_escape_string()$mysqli->real_escape_string()$pdo->quote() (或預處理)
mysql_insert_id()$mysqli->insert_id$pdo->lastInsertId()
mysql_error()$mysqli->error$pdo->errorInfo()
強制遷移提醒:PHP 7.0+ 完全移除 mysql 擴展。舊專案必須升級至 mysqli(程序風格兼容性最好)或 PDO(跨數據庫、更現代)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved