首頁  >  文章  >  後端開發  >  PHP+MariaDB資料庫操作基本技巧備忘總結

PHP+MariaDB資料庫操作基本技巧備忘總結

不言
不言原創
2018-06-01 11:09:501650瀏覽

這篇文章主要介紹了PHP MariaDB資料庫操作基本技巧,結合實例形式總結分析了PHP MariaDB資料庫連接、判斷以及基於PHP MariaDB的使用者登陸、管理、刪除等相關操作實現技巧與注意事項,需要的朋友可以參考下

本文實例總結了PHP MariaDB資料庫操作基本技巧。分享給大家供大家參考,具體如下:

PHP MySQL是比較常見的搭配,由於我主觀上不太喜歡Oracle,而MySQL被它收購後,骨子裡也發生了一些變化,因此我更換了MariaDB,仍然堅持MySQL當初開源信念的親兄弟。本質上都是MySQL的內核,因此下面所有的資料庫操作程式碼,都是可以直接在MySQL使用的。

晚上搭好PHP Apache的基礎環境,以及安裝好MySQL資料庫後,寫了一個最簡單的資料庫連線程式碼,結果報瞭如下經典錯誤:Fatal error: Class 'mysqli' not found

<?php
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
?>

其實這問題比較簡單,從PHP引擎返回的錯誤就知道mysqli沒有被正確的加載,絕大多數的問題都發生在php.ini檔案的設定中,「extension=php_mysqli.dll」這個設定項前面預設的分號沒有去掉。這個錯誤我倒沒有犯,php​​安裝路徑中的ext目錄中,也有php_mysqli.dll這個文件,那問題發生在哪裡呢?問題應該還是發生在php.ini檔案中哪個地方寫錯了。走讀後發現「extension_dir = "ext"」個地方沒有修改。我當時腦子沒多想,覺得PHP引擎是能夠自動找到這個相對路徑的。但後來想想,PHP引擎是Apache載入的,Apache不知道這個相對關係。還是老實的把這個地方改成了絕對路徑,OK了。其實可以在這個程式碼之前,先寫這麼一段程式碼,看看mysqli元件是否已經被載入了,這個方法適用於其他元件的載入前的判斷。

if (extension_loaded(&#39;mysqli&#39;))
{
  echo &#39;yes&#39;;
}
else
{
  echo &#39;no&#39;;
}

下面用一個使用者註冊和系統登入記錄PHP MySQL的最基本操作方法。

1、建立資料庫、表格和使用者。

DROP DATABASE IF EXISTS `test`;
CREATE DATABASE `test`
USE `test`;
DROP TABLE IF EXISTS `tbl_user`;
CREATE TABLE `tbl_user` (
 `username` varchar(32) NOT NULL default &#39;&#39;,
 `password` varchar(32) NOT NULL default &#39;&#39;,
 PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;

2、建立註冊和登入的html頁面,分別是register.html和login.html。如下圖所示:

 

3、註冊與登入的程式碼:

register_do.php

<?php
  $username = $_POST[&#39;username&#39;];
  $password = $_POST[&#39;password&#39;];
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $query = "select * from tbl_user where username = &#39;" . $username . "&#39;";
  echo &#39;<p>&#39; . $query;
  $result = $db->query($query);
  if ($result)
  {
    echo &#39;<p>&#39; . &#39;The user &#39;. $username .&#39; exist&#39;;
    echo &#39;<p>&#39; . &#39;<a href="register.html" rel="external nofollow" rel="external nofollow" >Back to register</a>&#39;;
  }
  else
  {
    $query = "insert into tbl_user values (&#39;". $username ."&#39;, &#39;". $password ."&#39;)";
    echo &#39;<p>&#39; . $query;
    $result = $db->query($query);
    if ($result)
    {
      echo &#39;<p>&#39; . &#39;<a href="register.html" rel="external nofollow" rel="external nofollow" >Register successful</a>&#39;;
    }
  }
?>

login_do.php

<?php
  $username = $_POST[&#39;username&#39;];
  $password = $_POST[&#39;password&#39;];
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $query = "select * from tbl_user where username = &#39;" . $username . "&#39; and password = &#39;" . $password . "&#39;";
  echo &#39;<p>&#39; . $query;
  $result = $db->query($query);
  if ($result->num_rows)
  {
    echo &#39;<p>&#39; . &#39;<a href="login.html" rel="external nofollow" rel="external nofollow" >Login successful</a>&#39;;
  }
  else
  {
    echo &#39;<p>&#39; . &#39;<a href="login.html" rel="external nofollow" rel="external nofollow" >Login failed</a>&#39;;
  }
?>

#userlist.php

##

<?php
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  echo &#39;<p>&#39; . &#39;All user as follows:&#39;;
  $query = "select * from tbl_user order by username";
  if ($result = $db->query($query))
  {
    while ($row = $result->fetch_assoc())
    {
      echo &#39;<p>&#39; . &#39;Username : &#39; . $row[&#39;username&#39;] . &#39;  <a href="userdelete.php?username=&#39; . $row[&#39;username&#39;] . &#39;" rel="external nofollow" >delete</a>&#39;;
    }
  }
?>

##4、該頁面最終的顯示效果如下圖:

5、刪除使用者的程式碼:

userdelete.php

<?php
  $username = $_GET[&#39;username&#39;];
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $query = "delete from tbl_user where username = &#39;" . $username . "&#39;";
  echo $query;
  if ($result = $db->query($query))
  {
    echo &#39;<p>&#39; . &#39;Delete user &#39; . $username . &#39; successful&#39;;
  }
  else
  {
    echo &#39;<p>&#39; . &#39;Delete user &#39; . $username . &#39; failed&#39;;
  }
  echo &#39;<p>&#39; . &#39;<a href="userlist.php" rel="external nofollow" >Back to user list</a>&#39;;
?>

Prepare預處理

1、書籍新增的頁面如下圖所示(bookadd.html):

2、建表腳本如下:

DROP DATABASE IF EXISTS `test`;
CREATE DATABASE IF NOT EXISTS `test`;
USE `test`;
DROP TABLE IF EXISTS `tbl_book`;
CREATE TABLE IF NOT EXISTS `tbl_book` (
 `isbn` varchar(32) NOT NULL,
 `title` varchar(32) NOT NULL,
 `author` varchar(32) NOT NULL,
 `price` float NOT NULL,
 PRIMARY KEY (`isbn`)
) ENGINE=InnoDB DEFAULT CHARSET=utf-8;

3、新增的邏輯處理程式碼如下(bookadd_do.php ):這裡特別要注意的是這句話“$db->query("set names utf-8")

”,代表寫入資料到資料庫時,採用utf-8編解碼,顯示的對資料庫表操作的編解碼進行設置,以防止中文的亂碼。後面我會專門針對這個技術點記錄一篇文章。

<?php
  $isbn = $_POST[&#39;isbn&#39;];
  $title = $_POST[&#39;title&#39;];
  $author = $_POST[&#39;author&#39;];
  $price = $_POST[&#39;price&#39;];
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $db->query("set names utf-8"); //特别注意这句话
  $stmt = $db->stmt_init();
  $stmt->prepare("insert into tbl_book values (?,?,?,?)");
  $stmt->bind_param("sssd", $isbn, $title, $author, $price);
  $stmt->execute();
  echo &#39;<p>&#39; . &#39;Affect rows is &#39; . $stmt->affected_rows;
  echo &#39;<p>&#39; . &#39;<a href="booklist.php" rel="external nofollow" >Go to book list page</a>&#39;;
?>

4、顯示圖書資訊的邏輯程式碼如下,同樣注意這句話「$db->query("set names utf- 8")

」:

<?php
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $db->query("set names utf-8"); //特别注意这句话
  $stmt = $db->stmt_init();
  $stmt->prepare("select * from tbl_book");
  $stmt->bind_result($isbn, $title, $author, $price);
  $stmt->execute();
  while($stmt->fetch())
  {
    echo &#39;ISBN : &#39; . $isbn . &#39;<p>&#39;;
    echo &#39;Title : &#39; . $title . &#39;<p>&#39;;
    echo &#39;Author : &#39; . $author . &#39;<p>&#39;;
    echo &#39;Price : &#39; . $price . &#39;<p>&#39;;
    echo &#39;<p>&#39; . &#39;-----------------------------&#39; . &#39;<p>&#39;;
  }
?>

5、顯示的頁面如下圖所示:

##好了,最基礎的部分就記錄到這,PHP引擎提供了很方便的資料庫操作方法,但正是開發絕不是如此簡單,各種異常要仔細考慮如何捕獲,如何處理。資料庫的設計也是一個挺好玩的話題。

相關推薦:

PHP基於pdo的資料庫操作類別【可支援mysql、sqlserver及oracle】

#

以上是PHP+MariaDB資料庫操作基本技巧備忘總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn