PHP MySQLi 語法

  1. 再從 host 登入 kvm3。
    [root@deyu ~]# ssh root@kvm3.deyu.wang
    root@kvm3.deyu.wang's password: 
    Last login: Tue Oct 14 13:12:12 2025 from 192.168.122.1
    
  2. 使用 dnf 安裝 php-mysqlnd,否則無法使用 mysqli 相關函式。
    [root@kvm3 ~]# dnf install php-mysqlnd-8.3.19-1.el10_0.x86_64
    
  3. 記得要重新啟動 httpd 服務,否則無法生效。
    [root@kvm3 ~]# systemctl restart httpd.service
    
  4. PHP 中使用 MySQL 資料庫的語法:
    1. function 就是要動作的函式,例如:connet 連線,close 斷線。
      mysqli_function(value,value,...);
      
    2. PHP 開啟 mysql 資料庫連線,其中 new_link,client_flag 可以不輸入,但一定要提供 server,user,passwd 才能連線。
      connection mysqli_connect(server,user,passwd,new_link,client_flag);
      
    3. PHP 關閉 mysql 資料庫連線,若成功傳回 true,否則回傳 false。
      bool mysqli_close ( resource $link_identifier );
      
  5. 變更目錄至 /var/www/html。
    [root@kvm3 ~]# cd /var/www/html/
    
  6. 編輯一個 a.php 檔,以用戶 root 測試是否可以連線 mysql,預設的 port 是 3306,密碼為 11123qwe。
    [root@kvm3 html]# vi a.php
    <?php
    $dbhost = 'localhost:3306';
    $dbuser = 'root';
    $dbpass = '11123qwe';
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass)
            or die(mysqli_connect_error().PHP_EOL);
    echo 'Connected successfully'.PHP_EOL;
    mysqli_close($conn); 
    ?>
    
  7. 使用 php 執行 a.php,第 5 行連線不成功。
    [root@kvm3 html]# php a.php
    PHP Fatal error:  Uncaught mysqli_sql_exception: Access denied for user 'root'@'localhost' (using password: YES) in /var/www/html/a.php:5
    Stack trace:
    #0 /var/www/html/a.php(5): mysqli_connect()
    #1 {main}
      thrown in /var/www/html/a.php on line 5
    
  8. 使用 curl 觀看 a.php 網頁,連線不成功,沒回傳任何訊息。
    [root@kvm3 html]# curl http://kvm3/a.php
    
  9. 修改 a.php,把密碼改成正確的 123123。
    [root@kvm3 html]# vi a.php 
    [root@kvm3 html]# grep dbpass a.php
    $dbpass = '123123';
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass)
    
  10. php 執行 a.php 成功連線資料庫,回應 "Connected successfully"。
    [root@kvm3 html]# php a.php
    Connected successfully
    
  11. 使用 curl 連線 http://kvm3/a.php,還是連線不成功,沒回傳訊息。
    [root@kvm3 html]# curl http://kvm3/a.php
    
  12. 原因為 SELinux 預設不允許 http 連線資料庫,開啟 httpd_can_network_connect_db。
    [root@kvm3 html]# setsebool -P httpd_can_network_connect_db on
    
  13. 再次使用 curl 觀看 a.php 網頁,連線成功,回傳 'Connected successfully'。
    [root@kvm3 html]# curl http://kvm3/a.php
    Connected successfully