next up previous contents
Next: PHP 輸出到檔案 Up: PHP 安裝 Previous: 防火牆設定   Contents   DYWANG_HOME

PHP MySQLi 語法

  1. 使用 yum 安裝 php-mysqlnd,否則無法使用 mysqli 相關函式。
    [root@kvm8 ~]# yum install php-mysqlnd
    
  2. 記得要重新啟動 httpd 服務,否則無法生效。
    [root@kvm8 ~]# systemctl restart httpd.service
    
  3. PHP 中使用 MySQL 資料的語法,一般格式如下,其中 function 就是要動作的函式,例如:connet 連線,close 斷線。
    mysqli_function(value,value,...);
    
  4. PHP 開啟 mysql 資料庫連線,其中 new_link,client_flag 可以不輸入,但一定要提供 server,user,passwd 才能連線。
    connection mysqli_connect(server,user,passwd,new_link,client_flag);
    
  5. PHP 關閉 mysql 資料庫連線,若成功傳回 true,否則回傳 false。
    bool mysqli_close ( resource $link_identifier );
    
  6. 變更目錄至 /var/www/html。
    [root@kvm8 ~]# cd /var/www/html/
    
  7. 編輯一個 a.php 檔,以用戶 root 測試是否可以連線 mysql,預設的 port 是 3306,密碼為 11123qwe。
    <?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); 
    ?>
    
  8. 使用 php 執行 a.php 或使用 curl 觀看 a.php 網頁,看到執行結果為存取限制 'Access denied for user....'。
    [root@kvm8 ~]# php /var/www/html/a.php 
    PHP Warning:  mysqli_connect(): (HY000/1045): Access denied for user
     'root'@'localhost' (using password: YES) in /var/www/html/a.php on line 5
    Access denied for user 'root'@'localhost' (using password: YES)
    [root@kvm8 ~]# curl -s http://127.0.0.1/a.php
    Access denied for user 'root'@'localhost' (using password: YES)
    
  9. 修改 a.php,把密碼改成正確的 123qwe。
    [root@kvm8 ~]# vim /var/www/html/a.php 
    [root@kvm8 ~]# grep dbpass /var/www/html/a.php
    $dbpass = '123qwe';
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass)
    
  10. 使用 curl 連線 http://kvm3/a.php,回傳 Permission denied。
    [root@kvm3 html]# curl -s http://kvm3/a.php
    Permission denied
    
  11. 原因為 SELinux 預設不允許 http 連線資料庫,開啟 httpd_can_network_connect_db
    [root@kvm3 html]# setsebool -P httpd_can_network_connect_db on
    
  12. 再次以 php 執行 a.php 或使用 curl 觀看 a.php 網頁,都可以看到執行結果為連線成功 'Connected successfully'。
    [root@kvm8 ~]# php /var/www/html/a.php
    Connected successfully
    [root@kvm8 ~]# curl -s http://kvm3/a.php
    Connected successfully
    



De-Yu Wang 2020-04-07