PHP MySQLi 連接資料庫使用概要說明
淺談 MySQLi
此為腦殘新手笨兔的個人看法,若有錯誤就自行更正唄!
php 用 MySQLi 連接資料庫
笨兔當初為架 PHP 版攻略網站,有人給建議學 MySQL,那時也不知啥 MySQLi,所以就傻傻地找谷狗大神尋找資訊摸索,學了稍點像樣的 MySQL 架好站了。後來遇到某些技術及功能問題 (主要是 PHP7.x 唄!),才知有 MySQLi 和 PDO 這玩意 >"<。不過腦殘笨兔主要還是摸索 PDO,此篇 MySQLi 只是好奇而稍微摸索,給自己參考記錄的,若有需者就參考唄!
※ 假設MySQL資料庫相關資訊如下 ※
範例程式碼(一):相似於原 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('參數數據類型',參數數據)
說明 ※
※PHP MySQLi 連接資料庫相關應用,可參考笨兔其它隨手筆記:
※PHP 其它函數 MySQL 和 PDO 連接資料庫相關應用,可參考笨兔の隨手筆記: