PHP & MySQL 快速指南



PHP & MySQL - 概述

MySQL 可以與多種程式語言很好地結合使用,例如 PERL、C、C++、JAVA 和 PHP。在這些語言中,PHP 因其 Web 應用程式開發能力而成為最流行的一種。

PHP 提供各種函式來訪問 MySQL 資料庫並操作 MySQL 資料庫中的資料記錄。您需要像呼叫任何其他 PHP 函式一樣呼叫 PHP 函式。

與 MySQL 一起使用的 PHP 函式具有以下通用格式:

mysql_function(value,value,...);

函式名稱的第二部分特定於該函式,通常是一個描述函式功能的詞。以下是我們將在本教程中使用的兩個函式:

mysqli_connect($connect);
mysqli_query($connect,"SQL statement");

以下示例顯示了 PHP 呼叫任何 MySQL 函式的通用語法。

<html>
   <head>
      <title>PHP with MySQL</title>
   </head>
   
   <body>
      <?php
         $retval = mysql_function(value, [value,...]);
         if( !$retval ) {
            die ( "Error: a related error message" );
         }
         // Otherwise MySQL or PHP Statements
      ?>
   </body>
</html>

從下一章開始,我們將看到所有重要的 MySQL 功能以及 PHP。

PHP & MySQL - 環境設定

為了開發和執行 PHP 網頁,需要在您的計算機系統上安裝三個重要元件。

  • Web 伺服器 - PHP 幾乎可以與所有 Web 伺服器軟體一起使用,包括 Microsoft 的 Internet Information Server (IIS),但最常用的是 Apache 伺服器。在此處免費下載 Apache:https://httpd.apache.org/download.cgi

  • 資料庫 - PHP 幾乎可以與所有資料庫軟體一起使用,包括 Oracle 和 Sybase,但最常用的是 MySQL 資料庫。在此處免費下載 MySQL:https://www.mysql.com/downloads/

  • PHP 解析器 - 為了處理 PHP 指令碼指令,必須安裝一個解析器以生成可以傳送到 Web 瀏覽器的 HTML 輸出。本教程將指導您如何在計算機上安裝 PHP 解析器。

PHP 解析器安裝

在繼續之前,務必確保您的機器上已正確設定環境,以便使用 PHP 開發 Web 程式。將以下 php 檔案儲存在 Apache 的 htdocs 資料夾中。

phpinfo.php

<?php
   phpinfo();
?>

在瀏覽器位址列中輸入以下地址。

http://127.0.0.1/phpinfo.php

如果顯示一個頁面,顯示與您的 PHP 安裝相關的信,則表示您已正確安裝了 PHP 和 Web 伺服器。否則,您必須按照給定的步驟在您的計算機上安裝 PHP。

本節將指導您在以下四個平臺上安裝和配置 PHP:

Apache 配置

如果您使用 Apache 作為 Web 伺服器,則本節將指導您編輯 Apache 配置檔案。

請檢視此處:Apache 伺服器中的 PHP 配置

PHP.INI 檔案配置

PHP 配置檔案php.ini是影響 PHP 功能的最終和直接方法。

請檢視此處:PHP.INI 檔案配置

Windows IIS 配置

要在 Windows 機器上配置 IIS,您可以參考隨 IIS 一起提供的 IIS 參考手冊。

安裝 MySQL 資料庫

當然,您最需要的是一個實際執行的資料庫,其中包含您可以查詢和修改的表。

  • MySQL 資料庫 - MySQL 是一個開源資料庫。您可以從MySQL 官方網站下載它。我們建議下載完整的 Windows 安裝程式。

  • 此外,還下載並安裝MySQL Administrator以及MySQL Query Browser。這些是基於 GUI 的工具,將使您的開發更加輕鬆。

  • 最後,下載並解壓MySQL Connector/J(MySQL JDBC 驅動程式)到一個方便的目錄。在本教程中,我們假設您已將驅動程式安裝在 C:\Program Files\MySQL\mysql-connector-java-5.1.8。

  • 相應地,將 CLASSPATH 變數設定為 C:\Program Files\MySQL\mysql-connector-java-5.1.8\mysql-connector-java-5.1.8-bin.jar。您的驅動程式版本可能會因您的安裝而異。

設定資料庫憑據

安裝 MySQL 資料庫時,其管理員 ID 設定為root,並允許設定您選擇的密碼。

使用 root ID 和密碼,您可以建立另一個使用者 ID 和密碼,或者您可以將 root ID 和密碼用於您的 JDBC 應用程式。

有各種資料庫操作,如資料庫建立和刪除,這需要管理員 ID 和密碼。

對於其餘的 JDBC 教程,我們將使用 MySQL 資料庫,ID 為guest,密碼為guest123

如果您沒有足夠的許可權來建立新使用者,那麼您可以要求您的資料庫管理員 (DBA) 為您建立一個使用者 ID 和密碼。

建立資料庫

要建立TUTORIALSPOINT資料庫,請使用以下步驟:

步驟 1

開啟命令提示符,並更改為以下安裝目錄:

C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>

注意 - mysqld.exe 的路徑可能會因系統上 MySQL 的安裝位置而異。您還可以檢視有關如何啟動和停止資料庫伺服器的文件。

步驟 2

如果資料庫伺服器尚未執行,則執行以下命令啟動它。

C:\Program Files\MySQL\bin>mysqld
C:\Program Files\MySQL\bin>

步驟 3

透過執行以下命令建立TUTORIALSPOINT資料庫:

C:\Program Files\MySQL\bin> mysqladmin create TUTORIALSPOINT -u guest -p
Enter password: ********
C:\Program Files\MySQL\bin>

建立表

要在 TUTORIALSPOINT 資料庫中建立Employees表,請使用以下步驟:

步驟 1

開啟命令提示符,並更改為以下安裝目錄:

C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>

步驟 2

登入資料庫,如下所示:

C:\Program Files\MySQL\bin>mysql -u guest -p
Enter password: ********
mysql>

步驟 3

建立表Employees,如下所示:

mysql> use TUTORIALSPOINT;
mysql> create table Employees
   -> (
   -> id int not null,
   -> age int not null,
   -> first varchar (255),
   -> last varchar (255)
   -> );
Query OK, 0 rows affected (0.08 sec)
mysql>

建立資料記錄

最後,您可以在 Employee 表中建立一些記錄,如下所示:

mysql> INSERT INTO Employees VALUES (100, 18, 'Zara', 'Ali');
Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO Employees VALUES (101, 25, 'Mahnaz', 'Fatma');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Employees VALUES (102, 30, 'Zaid', 'Khan');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Employees VALUES (103, 28, 'Sumit', 'Mittal');
Query OK, 1 row affected (0.00 sec)

mysql>

要全面瞭解 MySQL 資料庫,請學習MySQL 教程

現在您可以開始嘗試使用 PHP 了。

PHP & MySQL - 連線資料庫示例

PHP 提供mysqli建構函式或mysqli_connect()函式來開啟資料庫連線。此函式接受六個引數,並在成功時返回 MySQL 連結識別符號,失敗時返回 FALSE。

語法

$mysqli = new mysqli($host, $username, $passwd, $dbName, $port, $socket);

序號 引數和說明
1

$host

可選 - 執行資料庫伺服器的主機名。如果未指定,則預設值為localhost:3306

2

$username

可選 - 訪問資料庫的使用者名稱。如果未指定,則預設為擁有伺服器程序的使用者名稱稱。

3

$passwd

可選 - 訪問資料庫的使用者密碼。如果未指定,則預設為空密碼。

4

$dbName

可選 - 要在其上執行查詢的資料庫名稱。

5

$port

可選 - 要嘗試連線到的 MySQL 伺服器的埠號。

6

$socket

可選 - 應使用的套接字或命名管道。

您可以隨時使用另一個 PHP 函式close()斷開與 MySQL 資料庫的連線。

語法

$mysqli->close();

示例

嘗試以下示例以連線到 MySQL 伺服器:

將以下示例複製並貼上為 mysql_example.php:

<html>
   <head>
      <title>Connecting MySQL Server</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $mysqli = new mysqli($dbhost, $dbuser, $dbpass);
         
         if($mysqli->connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli->connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
         $mysqli->close();
      ?>
   </body>
</html>

輸出

訪問部署在 Apache Web 伺服器上的 mysql_example.php 並驗證輸出。

Connected successfully.

PHP & MySQL - 建立資料庫示例

PHP 使用mysqli_query()mysql_query()函式來建立或刪除 MySQL 資料庫。此函式接受兩個引數,並在成功時返回 TRUE,失敗時返回 FALSE。

語法

$mysqli->query($sql,$resultmode)

序號 引數和說明
1

$sql

必需 - 建立 MySQL 資料庫的 SQL 查詢。

2

$resultmode

可選 - 根據所需行為,使用常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT。預設情況下,使用 MYSQLI_STORE_RESULT。

示例

嘗試以下示例以建立資料庫:

將以下示例複製並貼上為 mysql_example.php:

<html>
   <head><title>Creating MySQL Database</title></head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $mysqli = new mysqli($dbhost, $dbuser, $dbpass);
         
         if($mysqli->connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli->connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
		 
         if ($mysqli->query("CREATE DATABASE TUTORIALS")) {
            printf("Database TUTORIALS created successfully.<br />");
         }
         if ($mysqli->errno) {
            printf("Could not create database: %s<br />", $mysqli->error);
         }
         $mysqli->close();
      ?>
   </body>
</html>

輸出

訪問部署在 Apache Web 伺服器上的 mysql_example.php 並驗證輸出。

Connected successfully.
Database TUTORIALS created successfully.

PHP & MySQL - 刪除資料庫示例

PHP 使用mysqli_query()mysql_query()函式來刪除 MySQL 資料庫。此函式接受兩個引數,並在成功時返回 TRUE,失敗時返回 FALSE。

語法

$mysqli->query($sql,$resultmode)

序號 引數和說明
1

$sql

必需 - 刪除 MySQL 資料庫的 SQL 查詢。

2

$resultmode

可選 - 根據所需行為,使用常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT。預設情況下,使用 MYSQLI_STORE_RESULT。

示例

嘗試以下示例以刪除資料庫:

將以下示例複製並貼上為 mysql_example.php:

<html>
   <head><title>Dropping MySQL Database</title></head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $mysqli = new mysqli($dbhost, $dbuser, $dbpass);
         
         if($mysqli->connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli->connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
		 
         if ($mysqli->query("Drop DATABASE TUTORIALS")) {
            printf("Database TUTORIALS dropped successfully.<br />");
         }
         if ($mysqli->errno) {
            printf("Could not drop database: %s<br />", $mysqli->error);
         }
         $mysqli->close();
      ?>
   </body>
</html>

輸出

訪問部署在 Apache Web 伺服器上的 mysql_example.php 並驗證輸出。

Connected successfully.
Database TUTORIALS dropped successfully.

PHP & MySQL - 選擇資料庫示例

PHP 使用mysqli_select_db函式來選擇要對其執行查詢的資料庫。此函式接受兩個引數,並在成功時返回 TRUE,失敗時返回 FALSE。

語法

mysqli_select_db ( mysqli $link , string $dbname ) : bool

序號 引數和說明
1

$link

必需 - mysqli_connect() 或 mysqli_init() 返回的連結識別符號。

2

$dbname

必需 - 要連線的資料庫的名稱。

示例

嘗試以下示例以選擇資料庫:

將以下示例複製並貼上為 mysql_example.php:

<html>
   <head>
      <title>Selecting MySQL Database</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $conn = mysqli_connect($dbhost, $dbuser, $dbpass);

         if(! $conn ) {
            die('Could not connect: ' . mysqli_error($conn));
         }
         echo 'Connected successfully<br />';
         $retval = mysqli_select_db( $conn, 'TUTORIALS' );

         if(! $retval ) {
            die('Could not select database: ' . mysqli_error($conn));
         }
         echo "Database TUTORIALS selected successfully\n";
         mysqli_close($conn);
      ?>
   </body>
</html>

輸出

訪問部署在 Apache Web 伺服器上的 mysql_example.php 並驗證輸出。

Database TUTORIALS selected successfully

PHP & MySQL - 建立表

PHP 使用mysqli_query()mysql_query()函式來建立 MySQL 表。此函式接受兩個引數,並在成功時返回 TRUE,失敗時返回 FALSE。

語法

$mysqli->query($sql,$resultmode)

序號 引數和說明
1

$sql

必需 - 建立 MySQL 表的 SQL 查詢。

2

$resultmode

可選 - 根據所需行為,使用常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT。預設情況下,使用 MYSQLI_STORE_RESULT。

示例

嘗試以下示例以建立表:

將以下示例複製並貼上為 mysql_example.php:

<html>
   <head>
      <title>Creating MySQL Table</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $dbname = 'TUTORIALS';
         $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
         
         if($mysqli->connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli->connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
         $sql = "CREATE TABLE tutorials_tbl( ".
            "tutorial_id INT NOT NULL AUTO_INCREMENT, ".
            "tutorial_title VARCHAR(100) NOT NULL, ".
            "tutorial_author VARCHAR(40) NOT NULL, ".
            "submission_date DATE, ".
            "PRIMARY KEY ( tutorial_id )); ";
         if ($mysqli->query($sql)) {
            printf("Table tutorials_tbl created successfully.<br />");
         }
         if ($mysqli->errno) {
            printf("Could not create table: %s<br />", $mysqli->error);
         }
         $mysqli->close();
      ?>
   </body>
</html>

輸出

訪問部署在 Apache Web 伺服器上的 mysql_example.php 並驗證輸出。

Connected successfully.
Table tutorials_tbl created successfully.

PHP & MySQL - 刪除表示例

PHP 使用mysqli_query()mysql_query()函式來刪除 MySQL 表。此函式接受兩個引數,並在成功時返回 TRUE,失敗時返回 FALSE。

語法

$mysqli->query($sql,$resultmode)

序號 引數和說明
1

$sql

必需 - 刪除表的 SQL 查詢。

2

$resultmode

可選 - 根據所需行為,使用常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT。預設情況下,使用 MYSQLI_STORE_RESULT。

示例

嘗試以下示例以刪除表:

將以下示例複製並貼上為 mysql_example.php:

<html>
   <head><title>Dropping MySQL Table</title></head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $dbname = 'TUTORIALS';
         $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
         
         if($mysqli->connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli->connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
		 
         if ($mysqli->query("Drop Table tutorials_tbl")) {
            printf("Table tutorials_tbl dropped successfully.<br />");
         }
         if ($mysqli->errno) {
            printf("Could not drop table: %s<br />", $mysqli->error);
         }
         $mysqli->close();
      ?>
   </body>
</html>

輸出

訪問部署在 Apache Web 伺服器上的 mysql_example.php 並驗證輸出。

Connected successfully.
Table tutorials_tbl dropped successfully.

PHP & MySQL - 插入記錄示例

PHP 使用mysqli_query函式在表中插入記錄。此函式接受三個引數,並在成功時返回 TRUE,失敗時返回 FALSE。

語法

mysqli_query ( mysqli $link, string $query, int $resultmode = MYSQLI_STORE_RESULT ) : mixed

序號 引數和說明
1

$link

必需 - mysqli_connect() 或 mysqli_init() 返回的連結識別符號。

2

$query

必需 - 刪除表的 SQL 查詢。

2

$resultmode

可選 - 根據所需行為,使用常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT。預設情況下,使用 MYSQLI_STORE_RESULT。

示例

此示例將從使用者處獲取三個引數,並將它們插入 MySQL 表中。

將以下示例複製並貼上為 mysql_example.php:

<html>
   <head>
      <title>Add New Record in MySQL Database</title>
   </head>
   <body>
      <?php
         if(isset($_POST['add'])) {
            $dbhost = 'localhost';
            $dbuser = 'root';
            $dbpass = 'root@123';
            $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
         
            if(! $conn ) {
               die('Could not connect: ' . mysqli_error($conn));
            }
            if(! get_magic_quotes_gpc() ) {
               $tutorial_title = addslashes ($_POST['tutorial_title']);
               $tutorial_author = addslashes ($_POST['tutorial_author']);
            } else {
               $tutorial_title = $_POST['tutorial_title'];
               $tutorial_author = $_POST['tutorial_author'];
            }
            $submission_date = $_POST['submission_date'];
            $sql = "INSERT INTO tutorials_tbl ".
               "(tutorial_title,tutorial_author, submission_date) "."VALUES ".
               "('$tutorial_title','$tutorial_author','$submission_date')";
            mysqli_select_db( $conn, 'TUTORIALS' );
            $retval = mysqli_query( $conn, $sql );
         
            if(! $retval ) {
               die('Could not enter data: ' . mysqli_error($conn));
            }
            echo "Entered data successfully\n";
            mysqli_close($conn);
         } else {
      ?>  
      <form method = "post" action = "<?php $_PHP_SELF ?>">
         <table width = "600" border = "0" cellspacing = "1" cellpadding = "2">
            <tr>
               <td width = "250">Tutorial Title</td>
               <td><input name = "tutorial_title" type = "text" id = "tutorial_title"></td>
            </tr>         
            <tr>
               <td width = "250">Tutorial Author</td>
               <td><input name = "tutorial_author" type = "text" id = "tutorial_author"></td>
            </tr>         
            <tr>
               <td width = "250">Submission Date [   yyyy-mm-dd ]</td>
               <td><input name = "submission_date" type = "text" id = "submission_date"></td>
            </tr>      
            <tr>
               <td width = "250"> </td>
               <td></td>
            </tr>         
            <tr>
               <td width = "250"> </td>
               <td><input name = "add" type = "submit" id = "add"  value = "Add Tutorial"></td>
            </tr>
         </table>
      </form>
   <?php
      }
   ?>
   </body>
</html>

輸出

訪問部署在 Apache Web 伺服器上的 mysql_example.php,輸入詳細資訊,並在提交表單後驗證輸出。

Entered data successfully

在進行資料插入時,最好使用函式get_magic_quotes_gpc()來檢查當前 magic quote 配置是否已設定。如果此函式返回 false,則使用函式addslashes()在引號之前新增反斜槓。

您可以進行許多驗證來檢查輸入的資料是否正確,並採取相應的措施。

PHP & MySQL - 選擇記錄示例

您可以將相同的 SQL SELECT 命令放入 PHP 函式mysql_query()中。此函式用於執行 SQL 命令,然後可以使用另一個 PHP 函式mysql_fetch_array()來獲取所有選定的資料。此函式將行返回為關聯陣列、數字陣列或兩者兼有。如果不再有行,則此函式返回 FALSE。

下面的程式是一個簡單的示例,它將演示如何從tutorials_tbl表中獲取/顯示記錄。

示例

下面的程式碼塊將顯示 tutorials_tbl 表中的所有記錄。

將以下示例複製並貼上為 mysql_example.php:

<html>
   <head>
      <title>Selecting Records</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $conn = mysqli_connect($dbhost, $dbuser, $dbpass);

         if(! $conn ) {
            die('Could not connect: ' . mysqli_error($conn));
         }
         echo 'Connected successfully<br />';
         
         mysqli_select_db( $conn, 'TUTORIALS' );
         $sql = "SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl";
         $retval = mysqli_query( $conn, $sql );
         if(! $retval ) {
            die('Could not get data: ' . mysqli_error($conn));
         }
         
         while($row = mysqli_fetch_array($retval, MYSQL_ASSOC)) {
            echo "Tutorial ID :{$row['tutorial_id']}  ".
               "Title: {$row['tutorial_title']} ".
               "Author: {$row['tutorial_author']} ".
               "Submission Date : {$row['submission_date']} ".
               "--------------------------------";
         } 
         echo "Fetched data successfully\n";
         mysqli_close($conn);
      ?>
   </body>
</html>

輸出

訪問部署在 Apache Web 伺服器上的 mysql_example.php,輸入詳細資訊,並在提交表單後驗證輸出。

Entered data successfully

在進行資料插入時,最好使用函式get_magic_quotes_gpc()來檢查當前 magic quote 配置是否已設定。如果此函式返回 false,則使用函式addslashes()在引號之前新增反斜槓。

您可以進行許多驗證來檢查輸入的資料是否正確,並採取相應的措施。

PHP & MySQL - 更新記錄示例

PHP 使用mysqli_query()mysql_query()函式更新 MySQL 表中的記錄。此函式接受兩個引數,成功時返回 TRUE,失敗時返回 FALSE。

語法

$mysqli->query($sql,$resultmode)

序號 引數和說明
1

$sql

需要 - 更新 MySQL 表中記錄的 SQL 查詢。

2

$resultmode

可選 - 根據所需行為,使用常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT。預設情況下,使用 MYSQLI_STORE_RESULT。

示例

嘗試以下示例以更新表中的記錄:

將以下示例複製並貼上為 mysql_example.php:

<html>
   <head>
      <title>Updating MySQL Table</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $dbname = 'TUTORIALS';
         $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
         
         if($mysqli->connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli->connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
		 
         if ($mysqli->query('UPDATE tutorials_tbl set tutorial_title = "Learning Java" where tutorial_id = 4')) {
            printf("Table tutorials_tbl updated successfully.<br />");
         }
         if ($mysqli->errno) {
            printf("Could not update table: %s<br />", $mysqli->error);
         }
   
         $sql = "SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl";
		 
         $result = $mysqli->query($sql);
           
         if ($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
               printf("Id: %s, Title: %s, Author: %s, Date: %d <br />", 
                  $row["tutorial_id"], 
                  $row["tutorial_title"], 
                  $row["tutorial_author"],
                  $row["submission_date"]);               
            }
         } else {
            printf('No record found.<br />');
         }
         mysqli_free_result($result);
         $mysqli->close();
      ?>
   </body>
</html>

輸出

訪問部署在 Apache Web 伺服器上的 mysql_example.php 並驗證輸出。在執行選擇指令碼之前,我們已在表中輸入多條記錄。

Connected successfully.
Table tutorials_tbl updated successfully.
Id: 1, Title: MySQL Tutorial, Author: Mahesh, Date: 2021
Id: 2, Title: HTML Tutorial, Author: Mahesh, Date: 2021
Id: 3, Title: PHP Tutorial, Author: Mahesh, Date: 2021
Id: 4, Title: Learning Java, Author: Mahesh, Date: 2021
Id: 5, Title: Apache Tutorial, Author: Suresh, Date: 2021

PHP & MySQL - 刪除記錄示例

PHP 使用mysqli_query()mysql_query()函式刪除 MySQL 表中的記錄。此函式接受兩個引數,成功時返回 TRUE,失敗時返回 FALSE。

語法

$mysqli->query($sql,$resultmode)

序號 引數和說明
1

$sql

需要 - 刪除 MySQL 表中記錄的 SQL 查詢。

2

$resultmode

可選 - 根據所需行為,使用常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT。預設情況下,使用 MYSQLI_STORE_RESULT。

示例

嘗試以下示例以刪除表中的一條記錄:

將以下示例複製並貼上為 mysql_example.php:

<html>
   <head>
      <title>Deleting MySQL Table record</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $dbname = 'TUTORIALS';
         $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
         
         if($mysqli->connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli->connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
         if ($mysqli->query('DELETE FROM tutorials_tbl where tutorial_id = 4')) {
            printf("Table tutorials_tbl record deleted successfully.<br />");
         }
         if ($mysqli->errno) {
            printf("Could not delete record from table: %s<br />", $mysqli->error);
         }
         $sql = "SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl";
		 
         $result = $mysqli->query($sql);
         if ($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
               printf("Id: %s, Title: %s, Author: %s, Date: %d <br />", 
                  $row["tutorial_id"], 
                  $row["tutorial_title"], 
                  $row["tutorial_author"],
                  $row["submission_date"]);               
            }
         } else {
            printf('No record found.<br />');
         }
         mysqli_free_result($result);
         $mysqli->close();
      ?>
   </body>
</html>

輸出

訪問部署在 Apache Web 伺服器上的 mysql_example.php 並驗證輸出。在執行選擇指令碼之前,我們已在表中輸入多條記錄。

Connected successfully.
Table tutorials_tbl record deleted successfully.
Id: 1, Title: MySQL Tutorial, Author: Mahesh, Date: 2021
Id: 2, Title: HTML Tutorial, Author: Mahesh, Date: 2021
Id: 3, Title: PHP Tutorial, Author: Mahesh, Date: 2021
Id: 5, Title: Apache Tutorial, Author: Suresh, Date: 2021

PHP & MySQL - WHERE 子句示例

PHP 使用mysqli_query()mysql_query()函式使用 WHERE 子句選擇 MySQL 表中的記錄。此函式接受兩個引數,成功時返回 TRUE,失敗時返回 FALSE。

語法

$mysqli->query($sql,$resultmode)

序號 引數和說明
1

$sql

需要 - 使用 WHERE 子句選擇 MySQL 表中記錄的 SQL 查詢。

2

$resultmode

可選 - 根據所需行為,使用常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT。預設情況下,使用 MYSQLI_STORE_RESULT。

示例

嘗試以下示例以使用 WHERE 子句選擇表中的記錄:

將以下示例複製並貼上為 mysql_example.php:

<html>
   <head>
      <title>Using Where Clause</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $dbname = 'TUTORIALS';
         $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
         
         if($mysqli->connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli->connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
   
         $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl where tutorial_author = "Mahesh"';
         $result = $mysqli->query($sql);
           
         if ($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
               printf("Id: %s, Title: %s, Author: %s, Date: %d <br />", 
                  $row["tutorial_id"], 
                  $row["tutorial_title"], 
                  $row["tutorial_author"],
                  $row["submission_date"]);               
            }
         } else {
            printf('No record found.<br />');
         }
         mysqli_free_result($result);
         $mysqli->close();
      ?>
   </body>
</html>

輸出

訪問部署在 Apache Web 伺服器上的 mysql_example.php 並驗證輸出。在執行選擇指令碼之前,我們已在表中輸入多條記錄。

Connected successfully.
Id: 1, Title: MySQL Tutorial, Author: Mahesh, Date: 2021
Id: 2, Title: HTML Tutorial, Author: Mahesh, Date: 2021
Id: 3, Title: PHP Tutorial, Author: Mahesh, Date: 2021

PHP & MySQL - LIKE 子句示例

PHP 使用mysqli_query()mysql_query()函式使用 LIKE 子句選擇 MySQL 表中的記錄。此函式接受兩個引數,成功時返回 TRUE,失敗時返回 FALSE。

語法

$mysqli->query($sql,$resultmode)

序號 引數和說明
1

$sql

需要 - 使用 LIKE 子句選擇 MySQL 表中記錄的 SQL 查詢。

2

$resultmode

可選 - 根據所需行為,使用常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT。預設情況下,使用 MYSQLI_STORE_RESULT。

示例

嘗試以下示例以使用 LIKE 子句選擇表中的記錄:

將以下示例複製並貼上為 mysql_example.php:

<html>
   <head>
      <title>Using Like Clause</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $dbname = 'TUTORIALS';
         $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
         
         if($mysqli->connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli->connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
   
         $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl where tutorial_author like "Mah%"';
         $result = $mysqli->query($sql);
         
         if ($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
               printf("Id: %s, Title: %s, Author: %s, Date: %d <br />", 
                  $row["tutorial_id"], 
                  $row["tutorial_title"], 
                  $row["tutorial_author"],
                  $row["submission_date"]);               
            }
         } else {
            printf('No record found.<br />');
         }
         mysqli_free_result($result);
         $mysqli->close();
      ?>
   </body>
</html>

輸出

訪問部署在 Apache Web 伺服器上的 mysql_example.php 並驗證輸出。在執行選擇指令碼之前,我們已在表中輸入多條記錄。

Connected successfully.
Id: 1, Title: MySQL Tutorial, Author: Mahesh, Date: 2021
Id: 2, Title: HTML Tutorial, Author: Mahesh, Date: 2021
Id: 3, Title: PHP Tutorial, Author: Mahesh, Date: 2021

PHP & MySQL - 資料排序示例

PHP 使用mysqli_query()mysql_query()函式從 MySQL 表中獲取排序後的記錄。此函式接受兩個引數,成功時返回 TRUE,失敗時返回 FALSE。

語法

$mysqli->query($sql,$resultmode)

序號 引數和說明
1

$sql

需要 - 從表中獲取排序記錄的 SQL 查詢。

2

$resultmode

可選 - 根據所需行為,使用常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT。預設情況下,使用 MYSQLI_STORE_RESULT。

示例

嘗試以下示例以從表中獲取排序後的記錄:

將以下示例複製並貼上為 mysql_example.php:

<html>
   <head>
      <title>Sorting MySQL Table records</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $dbname = 'TUTORIALS';
         $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
         
         if($mysqli->connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli->connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
   
         $sql = "SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl order by tutorial_title asc";
         $result = $mysqli->query($sql);
           
         if ($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
               printf("Id: %s, Title: %s, Author: %s, Date: %d <br />", 
                  $row["tutorial_id"], 
                  $row["tutorial_title"], 
                  $row["tutorial_author"],
                  $row["submission_date"]);               
            }
         } else {
            printf('No record found.<br />');
         }
         mysqli_free_result($result);
         $mysqli->close();
      ?>
   </body>
</html>

輸出

訪問部署在 Apache Web 伺服器上的 mysql_example.php 並驗證輸出。

Connected successfully.
Id: 5, Title: Apache Tutorial, Author: Suresh, Date: 2021
Id: 2, Title: HTML Tutorial, Author: Mahesh, Date: 2021
Id: 1, Title: MySQL Tutorial, Author: Mahesh, Date: 2021
Id: 3, Title: PHP Tutorial, Author: Mahesh, Date: 2021

PHP & MySQL - 使用 JOIN 示例

PHP 使用mysqli_query()mysql_query()函式使用 JOIN 從 MySQL 表中獲取記錄。此函式接受兩個引數,成功時返回 TRUE,失敗時返回 FALSE。

語法

$mysqli->query($sql,$resultmode)

序號 引數和說明
1

$sql

需要 - 使用 JOIN 從多個表中獲取記錄的 SQL 查詢。

2

$resultmode

可選 - 根據所需行為,使用常量 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT。預設情況下,使用 MYSQLI_STORE_RESULT。

首先使用以下指令碼在 MySQL 中建立一個表並插入兩條記錄。

create table tcount_tbl(
   tutorial_author VARCHAR(40) NOT NULL,
   tutorial_count int
);

insert into tcount_tbl values('Mahesh', 3);
insert into tcount_tbl values('Suresh', 1);

示例

嘗試以下示例以使用 JOIN 從兩個表中獲取記錄:

將以下示例複製並貼上為 mysql_example.php:

<html>
   <head>
      <title>Using joins on MySQL Tables</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $dbname = 'TUTORIALS';
         $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
         
         if($mysqli->connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli->connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
         
         $sql = 'SELECT a.tutorial_id, a.tutorial_author, b.tutorial_count
				FROM tutorials_tbl a, tcount_tbl b
				WHERE a.tutorial_author = b.tutorial_author';
         $result = $mysqli->query($sql);
           
         if ($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
               printf("Id: %s, Author: %s, Count: %d <br />", 
                  $row["tutorial_id"], 
                  $row["tutorial_author"], 
                  $row["tutorial_count"]);               
            }
         } else {
            printf('No record found.<br />');
         }
         mysqli_free_result($result);
         $mysqli->close();
      ?>
   </body>
</html>

輸出

訪問部署在 Apache Web 伺服器上的 mysql_example.php 並驗證輸出。

Connected successfully.
Id: 1, Author: Mahesh, Count: 3
Id: 2, Author: Mahesh, Count: 3
Id: 3, Author: Mahesh, Count: 3
Id: 5, Author: Suresh, Count: 1

PHP & MySQL - 處理 NULL 示例

您可以使用if...else條件根據 NULL 值準備查詢。

以下示例從外部獲取 tutorial_count,然後將其與表中可用的值進行比較。

示例

將以下示例複製並貼上為 mysql_example.php:

<html>
   <head>
      <title>Handling NULL</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $dbname = 'TUTORIALS';
         $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
         $tutorial_count = null;
         if($mysqli->connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli->connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
   
         if( isset($tutorial_count )) {
            $sql = 'SELECT tutorial_author, tutorial_count
               FROM  tcount_tbl
               WHERE tutorial_count = ' + $tutorial_count;
         } else {
            $sql = 'SELECT tutorial_author, tutorial_count
               FROM  tcount_tbl
               WHERE tutorial_count IS NULL';
         }
         $result = $mysqli->query($sql);
           
         if ($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
               printf("Author: %s, Count: %d <br />",
                  $row["tutorial_author"], 
                  $row["tutorial_count"]);               
            }
         } else {
            printf('No record found.<br />');
         }
         $mysqli->close();
      ?>
   </body>
</html>

輸出

訪問部署在 Apache Web 伺服器上的 mysql_example.php 並驗證輸出。

Connected successfully.
No record found.

PHP & MySQL - 資料庫資訊示例

MySQL 中有一些重要的命令,可以在 MySQL 提示符下執行,也可以使用任何指令碼(如 PHP)來獲取有關資料庫伺服器的各種重要資訊。

序號 命令 & 說明
1

SELECT VERSION( )

伺服器版本字串

2

SELECT DATABASE( )

當前資料庫名稱(如果無則為空)

3

SELECT USER( )

當前使用者名稱

4

SHOW STATUS

伺服器狀態指示器

5

SHOW VARIABLES

伺服器配置變數

示例

嘗試以下示例以獲取資料庫資訊:

將以下示例複製並貼上為 mysql_example.php:

<html>
   <head>
      <title>Getting MySQL Database Info</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $dbname = 'TUTORIALS';
         $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
         $tutorial_count = null;
		 
         if($mysqli->connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli->connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
		 
         if ($result = mysqli_query($mysqli, "SELECT DATABASE()")) {
            $row = mysqli_fetch_row($result);
            printf("Default database is %s<br />", $row[0]);
            mysqli_free_result($result);
         }
         $mysqli->close();
      ?>
   </body>
</html>

輸出

訪問部署在 Apache Web 伺服器上的 mysql_example.php 並驗證輸出。

Connected successfully.
Default database is tutorials
廣告