PHP與MySQL(15)

来源:https://www.cnblogs.com/xiukang/archive/2018/04/20/8569983.html
-Advertisement-
Play Games

PHP配置 引用mysqli擴展 不需要絕對路徑 如果不啟用,那麼引用mysqli擴展必須使用絕對路徑引用 建立和斷開鏈接 獲取錯誤信息 獲取錯誤碼 獲取錯誤信息 在單獨的文件中存儲鏈接信息 在必要時包含此文件 與資料庫交互 向資料庫發送查詢 ·獲取數據 query()方法 mysqli_store ...


PHP配置

  • 引用mysqli擴展
extension = php_mysqli.dll
  • 不需要絕對路徑

如果不啟用,那麼引用mysqli擴展必須使用絕對路徑引用

extension_dir = "ext"

建立和斷開鏈接

$mysqli = new mysqli();//實例化mysqli類
$mysqli -> connect("localhost","root","123");//鏈接資料庫
$mysqli -> select_db("text");//選擇text資料庫
$mysqli -> close();//關閉鏈接

獲取錯誤信息

  • 獲取錯誤碼
$mysqli = new mysqli("localhost","root","123","test");
echo $mysqli -> errno;//沒有錯誤返回0
  • 獲取錯誤信息
$mysqli = new mysqli("localhost","root","123");//實例化mysqli類
$mysqli -> select_db("text");//選擇text資料庫
if($mysqli -> errno){
echo $mysqli -> error;//Unknown database 'text' 沒有text資料庫
}
$mysqli -> close();//關閉鏈接
  • 在單獨的文件中存儲鏈接信息
//mysql.connect.php文件
<?php
$mysqli = new mysqli("localhost","root","123","test");
?>
  • 在必要時包含此文件
<?php
include "mysql.connect.php";//調用mysql.connect.php文件
?>

與資料庫交互

  • 向資料庫發送查詢

·獲取數據

query()方法

mysqli_store_result 較高的記憶體和處理需求,查詢整個結果集(預設)

mysqli_use_result 較低的記憶體需求,查詢幾行結果集

$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫
$query = "select id, name, age from xiu";//創建查詢語句
$result = $mysqli -> query($query,MYSQLI_STORE_RESULT);//$query()方法負責將query發送到資料庫
while(list($id,$name,$age) = $result -> fetch_row()){//fetch_row()方法將獲得的值生成一個數組
    printf("%d*%d*%d",$id,$name,$age);
}
$mysqli -> close();//關閉資料庫鏈接

·插入、刪除或更新數據

$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫
$query = "alter table xiu add column birdate date";//創建查詢語句
$mysqli -> query($query);//$query()方法負責將query發送到資料庫
echo $mysqli -> affected_rows;//提示影響的多少行
$mysqli -> close();//關閉資料庫鏈接

·釋放查詢記憶體

有時可能會獲取一個特別大的結果集,會占用大量記憶體,使用free()方法釋放占用的記憶體

$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫
$query = "select id, name, age from xiu";//創建查詢語句
$result = $mysqli -> query($query,MYSQLI_STORE_RESULT);//$query()方法負責將query發送到資料庫
while(list($id,$name,$age) = $result -> fetch_row()){//fetch_row()方法將獲得的值生成一個數組
    printf("%d*%d*%d",$id,$name,$age);
}
$mysqli -> free();//釋放記憶體
  • 解析查詢結果

·將結果放在對象中

fetch_object()方法將結果集放入對象中

$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫
$query = "select id, name, age from xiu";//創建查詢語句
$result = $mysqli -> query($query);//$query()方法負責將query發送到資料庫
while($xiu = $result -> fetch_object()){//fetch_object()方法將結果集放入對象中
    $id = $xiu -> id;
    $name = $xiu -> name;
    $age = $xiu -> age;
    printf("id:%d,name:%s,age:%d",$id,$name,$age);
}
$mysqli -> close();//關閉資料庫鏈接

·使用索引數組和關聯數組獲取結果

 fetch_array()將結果集放入數組

MYSQLI_ASSOC 將行作為一個關聯數組返回,鍵由欄位表示,值由欄位內容表示

MYSQLI_NUM 將行作為一個數字索引數組返回,元素的屬性有查詢中的順序決定

MYSQLI_BOTH 將行作為關聯數組和數組索引數組返回

$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫
$query = "select id, name, age from xiu";//創建查詢語句
$result = $mysqli -> query($query);//$query()方法負責將query發送到資料庫
while($xiu = $result -> fetch_array(MYSQLI_ASSOC)){//fetch_array()方法將結果集放入數組
    $id = $xiu["id"];
    $name = $xiu["name"];
    $age = $xiu["age"];
    printf("id:%d,name:%s,age:%d",$id,$name,$age);
}
$mysqli -> close();//關閉資料庫鏈接
  • 確定所選擇的行和受影響的行

·確定返回的行數

num_rows屬性返回查詢了多少行數據

$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫
$query = "select id, name, age from xiu";//創建查詢語句
$result = $mysqli -> query($query);//$query()方法負責將query發送到資料庫
echo $result -> num_rows;//num_rows屬性查詢返回了多少行數據
$mysqli -> close();//關閉資料庫鏈接

·確定受影響的行數

 affected_rows屬性返回受insert、update或delet查詢影響的行數

$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫
$query = "insert into xiu values(4,'user',20)";//創建查詢語句
$mysqli -> query($query);//$query()方法負責將query發送到資料庫
echo $mysqli -> affected_rows;//affected_rows屬性返回影響的行數
$mysqli -> close();//關閉資料庫鏈接
  • 處理準備語句

捆綁參數

$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫
$query = "insert into xiu values(?,?,?)";//創建查詢即相對應的占位符(?)
$stmt = $mysqli -> stmt_init();//創建語句對象
$stmt -> prepare($query);//為執行準備語句
$stmt -> bind_param("dsd",$id,$name,$age);//綁定參數
$id = 5;$name = "4";$age = 3;
$stmt -> execute();//執行語句
$stmt -> close();//恢復語句資源 
$mysqli -> close();//關閉資料庫鏈接

·捆綁變數

$mysqli = new mysqli("localhost","root","123","test");//鏈接資料庫伺服器並選擇test資料庫
$query = "select id,name,age from xiu";//創建查詢即相對應的占位符(?)
$stmt = $mysqli -> stmt_init();//創建語句對象
$stmt -> prepare($query);//為執行準備語句
$stmt -> execute();//執行語句
$stmt -> bind_result($id,$name,$age);//綁定結果參數
while($stmt -> fetch()){//fetch()獲取準備語句結果的每一行
    printf("id:%d,name:%s,age:%d",$id,$name,$age);
}
$stmt -> close();//恢復語句資源 
$mysqli -> close();//關閉資料庫鏈接

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 練習6.1: 為bit數組實現下麵這些方法 ...
  • 分頁查詢關鍵代碼: 通過servlet轉發回來的各種信息進行分頁的設計(轉發回的信息有 分頁查詢的List集合 查詢的頁碼 查詢的條數 查詢的資料庫總條數 查詢的總頁碼) 從開始時迴圈10次出現十個數字開始逐步細化 註意:jstl(java標磚標簽庫) 的判斷條件 test="" 引號中的變數運算寫 ...
  • 寫在前面 1.概念 IO流用來處理設備之間的數據傳輸 Java對數據的操作是通過流的方式 Java用於操作流的類都在IO包中 流按流向分為兩種:輸入流,輸出流 流按操作類型分為兩種: 位元組流 : 位元組流可以操作任何數據,因為在電腦中任何數據都是以位元組的形式存儲的 字元流 : 字元流只能操作純字元數 ...
  • 上一節我們結束了有關python的方法相關內容 這一節我們先來學習python的列表推導式 之前跟大家說過range方法的使用,在這裡我就不做過多的解釋了,如忘記了,請翻閱之前的介紹 列表推導式,是Python內置的一種極其強大的生成list的表達式 如果要生成一個list [1 , 2 , 3 , ...
  • 微服務架構模式的核心在於如何識別服務的邊界,設計出合理的微服務。但如果要將微服務架構運用到生產項目上,並且能夠發揮該架構模式的重要作用,則需要微服務框架的支持。 在Java生態圈,目前使用較多的微服務框架就是集成了包括Netfilix OSS以及Spring的Spring Cloud。它包括: Sp ...
  • 中文翻譯:Python之禪 by Tim Peters 優美勝於醜陋(Python 以編寫優美的代碼為目標)明瞭勝於晦澀(優美的代碼應當是明瞭的,命名規範,風格相似)簡潔勝於複雜(優美的代碼應當是簡潔的,不要有複雜的內部實現)複雜勝於凌亂(如果複雜不可避免,那代碼間也不能有難懂的關係,要保持介面簡潔 ...
  • 具體報錯信息: lto1: fatal error: bytecode stream generated with LTO version 6.0 instead of the expected 4.1 compilation terminated. lto-wrapper: fatal error ...
  • 什麼是序列化? 我們創建的對象只有在Java虛擬機保持運行時,才會存在於記憶體中。如果想要超出Java虛擬機的生命周期,就可以將對象序列化,將對象狀態轉換為位元組序列,寫入文件(或socket傳輸),後面使用時再讀入文件,讀入原始位元組並創建一個完全相同的對象。 PS:只有對象的狀態會被序列化,類本身或方 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...