喵喵笨兔 の 喵喵的家~遊戲天地 - 首頁(上版面)
喵喵笨兔 の 喵喵的家~遊戲天地 - 首頁(左版面)
首  頁 最新消息 遊戲攻略 遊戲影片 遊戲圖片 下載區 學習分享 留言板 FB粉絲團
 喵喵笨兔 の 喵喵的家~遊戲天地 - PHP MySQLi 連接資料庫使用概要說明

PHP MySQLi 連接資料庫使用概要說明

淺談 MySQLi

 此為腦殘新手笨兔的個人看法,若有錯誤就自行更正唄!

  • MySQLi 為最原始 MySQL 的進階功能版,本身也增加了安全性 (避免SQL Injection)。
  • MySQL 系列函數只適用於 PHP 5.x 版以下,PHP 7.x 以上就掛囉!MySQLi 系列函數則適用於 PHP 全版本。
  • MySQLi 的語法,就腦殘的新手笨兔而言,算是 MySQL 和 PDO 的混合版吧!若用過 MySQL,基本上對 MySQLi 函數可無痛轉移。
  • MySQL 函數和 MySQLi 函數只能連接 MySQL 資料庫。PDO 函數可連接數種資料庫,若您剛接觸資料庫,強烈建議用 PDO 吧!

php 用 MySQLi 連接資料庫

 笨兔當初為架 PHP 版攻略網站,有人給建議學 MySQL,那時也不知啥 MySQLi,所以就傻傻地找谷狗大神尋找資訊摸索,學了稍點像樣的 MySQL 架好站了。後來遇到某些技術及功能問題 (主要是 PHP7.x 唄!),才知有 MySQLi 和 PDO 這玩意 >"<。不過腦殘笨兔主要還是摸索 PDO,此篇 MySQLi 只是好奇而稍微摸索,給自己參考記錄的,若有需者就參考唄!

※ 假設MySQL資料庫相關資訊如下 ※

  • 伺服器名稱: localhost
  • 使用者帳號: root
  • 使用者密碼: 12345678
  • 資料庫名稱: pcgame
  • 資料表名稱: test
  • 資料表欄位名稱: t_id、t_name、t_tel 共3個欄位

範例程式碼(一):相似於原 MySQL 的寫法。腦殘笨兔是建議用範例二的寫法。

<?php    

$dbhost = "localhost";
$dbuser = "root";
$dbpass = "12345678";
$dbname = "pcgame";
$conn = new MySQLi($dbhost, $dbuser, $dbpass, $dbname); //連線
$conn -> query("SET NAMES utf8"); //指定連線編碼

//若連線失敗就顯示錯誤訊息
if($conn -> connect_error){
die('無法連接資料庫:'.$conn -> connect_error);
}

$sql= "select * from test";
$rs = $conn -> query($sql);

$num = $rs -> num_rows; //計算筆數寫法

//顯示資料;fetch_assoc()為字串取出資料如$row['l_url'],fetch_row()為索引取出資料如$row[2],fetch_array()為兩者皆可
while($row = $rs -> fetch_assoc()){
echo $row['t_id']."<br>";
echo $row['t_name']."<br>";
echo $row['t_tel']."<br>";
}

//關閉連線
$conn -> close();
?>

範例程式碼(二):物件導向方式,prepaer 的寫法,避免SQL Injection。(語法幾乎和PDO差不多,所以學這,不如學PDO來的方便實用)

<?php    

$dbhost = "localhost";
$dbuser = "root";
$dbpass = "12345678";
$dbname = "pcgame";
$conn = new MySQLi($dbhost, $dbuser, $dbpass, $dbname); //連線
$conn -> query("SET NAMES utf8"); //指定連線編碼

//若連線失敗就顯示錯誤訊息
if($conn -> connect_error){
die('無法連接資料庫:'.$conn -> connect_error);
}

$sql= "select * from test";
$rs = $conn -> prepare($sql);
$rs -> execute();

//若 select *,則全部欄位都要照資料庫內順序綁定到bind_result()裡面。對應後的名稱隨便您取,但前面必須加上"$"
$rs -> bind_result($id,$name,$tel);

$num = $rs -> num_rows; //計算筆數寫法

//顯示資料
while($rs -> fetch()){
echo $id."<br>";
echo $name."<br>";
echo $tel."<br>";
}

//關閉連線
$conn -> close();
?>

範例程式碼(三):範例二延伸,bind_param()綁定參數的寫法。

<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "12345678";
$dbname = "pcgame";
$conn = new MySQLi($dbhost, $dbuser, $dbpass, $dbname); //連線
$conn -> query("SET NAMES utf8"); //指定連線編碼
//若連線失敗就顯示錯誤訊息
if($conn -> connect_error){
die('無法連接資料庫:'.$conn -> connect_error);
}
$sn = 1;
$sql= "select t_id,t_name from test where t_id = ?";
$rs = $conn -> prepare($sql); //將$sn綁定帶入?變數
$rs -> bind_param('i',$sn);
$rs -> execute(); //此 select 指定二個欄位,所以照資料庫內順序綁定二個到bind_result()裡面即可
$rs -> bind_result($id,$name);
while($rs -> fetch()){
echo $id."_".$name."<br>";
}

//關閉連線
$conn -> close(); ?>

※ 範例(三)程式碼中的綁定參數 bind_param('參數數據類型',參數數據) 說明 ※

  • 參數數據類型有四種:
    i:integer 整數型
    s:string 字串
    d:double 雙精度浮點數
    b:BLOB 布爾值
    單參數數據 : bind_param('i',$sn)
    多參數數據 (類型依順序對照後面的參數) : bind_param('iss',$sn,$abc,$def)

 ※PHP MySQLi 連接資料庫相關應用,可參考笨兔其它隨手筆記:

 ※PHP 其它函數 MySQL 和 PDO 連接資料庫相關應用,可參考笨兔の隨手筆記:

笨兔隨手筆記於 2019/6/28

喵喵笨兔 の 喵喵的家~遊戲天地
http://vv0817.tk
http://vvv.lionfree.net
http://qo3op.asuscomm.com/vvv
https://uoedgpkhyfwzmd7zua8myg-on.drv.tw/vvv