日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

php连接mysqli面向过程,PHP基础知识总结:MySQLi 面向过程

發布時間:2025/3/19 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php连接mysqli面向过程,PHP基础知识总结:MySQLi 面向过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文只針對 MySQLi 面向過程的函數使用方法。

1 數據庫連接相關函數

mysqli_connect(host, user, pwd, db, port, socket), 全部參數都是可選的,默認會從php.ini文件中找對應的值。

$con = mysqli_connect($servername, $username, $pwd, $db);

if (mysqli_connect_errno()) // 返回連接錯誤的代碼,沒錯誤返回0

die(mysqli_connect_error()); // 返回連接錯誤的字符串,沒錯誤返回null

...

mysqli_close($con);

2 SQL 常用函數

mysqli_insert_id($con), 返回最后一次查詢所生成ID。

mysqli_affected_rows(con), 返回上一次insert/update/replace/delete/select影響的行數

mysqli_query($con, $sql [,resultatmode]), 返回結果集。

2a 調試

msyqli_errno(con), 返回最近用的函數的錯誤代碼

mysqli_error(con), 返回最近用的函數的錯誤描述字符串

mysqli_error_list(con), 返回最近用的函數的錯誤列表(錯誤代碼,錯誤文本,sqlistate的管理數組)

mysqli_info(con), 返回上一次查詢的額外信息 string

mysqli_sqlstate(con), 返回最后一個SQLSTATE錯誤代碼,‘00000’表示沒有錯誤

mysqli_warning_count(con), 返回上一次查詢的警告次數

2b 多個查詢

mysqli_multi_query($con, $sql), 執行多個查詢。

mysqli_next_result($con), 下一個結果集。

mysqli_more_result($con), 檢查批量查詢中是否還有查詢結果。

mysqli_store_result(), 轉移上次查詢返回的結果集。

mysqli_user_result(),

3 處理結果集的函數

3a 行:

mysqli_data_seek(res, offset), 移動行指針,返回bool

mysqli_fetch_all(res, [type]), 返回結果集的所有行組成的數組,type索引或關聯或兩者

mysqli_fetch_array(res, [type]), 返回結果集中的當前行,type同上

mysqli_fetch_assoc(res), 返回結果集中的當前行,關聯數組

mysqli_fetch_row(res), 返回結果集中的當前行,索引數組

mysqli_fetch_object(res), 返回結果集中的當前行,對象

mysqli_fetch_lengths(res), 返回當前行的每個字段長度組成的數組。

mysqli_num_rows(res), 結果集的行數。

3b 列:

mysqli_num_fields(res), 結果集的列數

mysqli_field_count(con), 當前結果集列的數量,值應該同上

mysqli_field_seek(res, offset), 移動列指針

mysqli_field_tell(res), 返回當前列指針位置

mysqli_fetch_fields(res), 返回結果集的所有列(字段)定義信息組成的數組,每個列定義信息是一個對象。

mysqli_fetch_field(res), 返回結果集中當前列定義信息,對象

mysqli_fetch_field_direct(res, n), 直接返回第n列定義信息,對象

3c 其它結果集函數

mysqli_fres_result(res), 釋放結果集內存。

4 預處理相關函數

減少了分析時間,只做一次查詢(盡管語句多次執行)

減少了服務器寬帶,只需要發送查詢的參數,而不是整個語句

防止sql注入,因為參數值發送或使用的協議,保證了數據的合法性

4a 預處理插入數據庫

$sql = "insert into MyGuests (firstname, lastname, email)

values(?, ?, ?)";

$stmt = mysqli_stmt_init($con); // 初始化 statement對象

if (mysqli_stmt_prepare($stmt, $sql)) { // 預處理

mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);

$firstname = 'john';

$lastname ='Doe';

$email = 'john@gmail.com';

mysqli_stmt_execute($stmt);

$firstname = 'Mary';

$lastname ='Moe';

$email = 'mary@gmail.com';

mysqli_stmt_execute($stmt);

$firstname = 'Julie';

$lastname ='Dooley';

$email = 'julie@gmail.com';

mysqli_stmt_execute($stmt);

} else {

echo 'something wrong!';

echo PHP_EOL;

}

mysqli_close($con);

4b 預處理處理結果集,方法一

$stmt = mysqli_stmt_init($con);

$sql = "select * from MyGuests where id = ?";

if (mysqli_stmt_prepare($stmt, $sql)) {

$id = 3;

mysqli_stmt_bind_param($stmt, 'i', $id);

mysqli_stmt_execute($stmt);

mysqli_stmt_bind_result($stmt, $col1, $col2, $col3, $col4, $col5);

mysqli_stmt_fetch($stmt);

for ($i=1;$i<6;$i++) {

print_r(${'col'.$i});

echo PHP_EOL;

}

} else {

echo 'prepare doesn\'t work!';

echo PHP_EOL;

}

4c 預處理處理結果集,方法二

$sql = "select * from MyGuests where id = ?";

if ($stmt=mysqli_prepare($con, $sql)) {

mysqli_stmt_bind_param($stmt, 'i', $id);

$id =3;

mysqli_stmt_execute($stmt);

mysqli_stmt_bind_result($stmt, $col1, $col2, $col3, $col4, $col5);

mysqli_stmt_fetch($stmt);

for ($i=1;$i<6;$i++) {

print_r(${'col'.$i});

echo PHP_EOL;

}

} else {

echo 'prepare doesn\'t work!';

echo PHP_EOL;

}

5 事務處理

$sql1 = '。。。';

$sql2 = '。。。';

mysqli_autocommit($con, false);

if (mysqli_query($con, $sql1) && mysqli_query($con, $sql2)) {

mysqli_commit($con);

echo 'ok';

} else {

mysqli_rollback($con);

echo 'not ok';

}

echo PHP_EOL;

mysqli_autocommit(true);

總結

以上是生活随笔為你收集整理的php连接mysqli面向过程,PHP基础知识总结:MySQLi 面向过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。