--- ###### tags: `web111a` `程式筆記` `PHP` --- # PHP & MySQL * 時間:2022/5/26 * 老師:戴德仁 ## 環境設定 本課程 PHP 與 Laravel 授課老師分開,先將環境建立 [前置作業:SSH 連線](/8oOwRJIFTYC34mwPEGsdpQ#本機端用-SSH-登入虛擬機) * ssh * port:443 * 提供安全性傳輸 `https://` 傳輸資訊不會以明碼馬顯示於網址中 VS Code 中 Remote FS 套件,[建立多組設置](/8oOwRJIFTYC34mwPEGsdpQ#上傳到伺服器) ```json= /* settings.json */ "remotefs.remote":{ "allen":{ "scheme":"sftp" "host":"localhost" "username":"allen" "privatekeypath":"c:/Users/allen/.ssh/id rsa allen" "rootPath":"D:\\htdocs\ \www\ \webllla" }, "vm":{ "scheme":"sftp" "host":"192.168.67.178" "username":"webllla" "privateKeyPath":"c:/Users/allen/.ssh/id_rsa_vm" "rootPath":"D: \\htdocs\www\\webllla\\" }, "xampp-server":{ "scheme":"sftp" "host":"127.0.0.1" "username":"allen" "privateKeyPath":"c:/Users/allen/.ssh/id_rsa_xampp-server" "rootpath":"D:\\htdocs\\www\\webllla\\" } } ``` ```json= /* sftp.json */ { "name": "xampp同服器", "remote" : "xampp-server", "remotepath" : "d:/xampp/htdocs/web111a", "protocol": "sftp", "uploadOnSave" : true "ignore": [ ".vscode", ".git", ".DS Store" ] } ``` 更改 [Virual-host](/8oOwRJIFTYC34mwPEGsdpQ#XAMPP-Virual-host),ip到時候再換就好 ```htmlembedded= <!-- httpd-vhost.conf --> <VirtualHost *:6680> ServerAdmitwebmaster@dummy-host2.example DocumentRoot "D: /xampp/htdocs/web11la/laravel" ServerName laravel.web111a.com ##ErrorLog "logs/dunmy-host2.example.com-error.log" ##CustomLog"1ogs/dummy-host2.example.com-access.logm common </VirtualHost> <VirtualHost *:6680> ServerAdmitwebmaster@dummy-host2.example DocumentRoot "D: /xampp/htdocs/web11la/laravel" ServerName laravel.web111a.com ##ErrorLog "logs/dunmy-host2.example.com-error.log" ##CustomLog"1ogs/dummy-host2.example.com-access.logm common </VirtualHost> ``` 更改 `C:/Window/System32/drivers/etc/hosts` ```htmlembedded= <!-- hosts --> 127.0.0.1 php.web111a.com 127.0.0.1 laravel.web111a.com ``` ## 連線資料庫 1. mySQL() 1. PDO 物件:laravel 使用這種方式 ## PHP (Hypertext Preprocessor) * `<?php 內容 ?>` * 支援短標籤 `<? 內容 ?>` * xampp :arrow_right: php :arrow_right: php.ini :arrow_right: 搜尋 `short_open_tag` 改為 `On` * 要加分號 `;` * 大小寫敏感 * call by value: `$val` * call by ref: `&$val` * 變數+字串:`"{$var} 一二三"`,注意只能是雙引號 `"`,單引號 `'` 不支援此種寫法 * $arr = array(1, 2, 3); * 變數: * `$val` * 通常小寫 * 常數:不可改變 * define("key", "value") * 通常大寫 ### 變數 宣告方式 ```php= $var = "yo~": ``` 變數+字串用 `.` ```php= echo "My name is ".$name; ``` 變數+字串縮寫,注意只能是雙引號 `"`,單引號 `'` 不支援此種寫法 :::success :accept: ```php= echo "{$var} 一二三"; ``` ::: :::danger :no_entry_sign: ```php= echo '{$var} 一二三'; ``` ::: ### Array ```php= $arr = array(1, 2, 3); ``` ### 常數 宣告完就不可改變,例外:魔術常數。一般而言會以全大寫命名 ```php= define("PHPCONST", "yo~") ``` 魔術常數: ```php= $line = __LINE__; ``` ![魔術常數](https://i.imgur.com/GNaLAFv.png) ```php= namespace Myproject; $a = __LINE__; $b = __FILE__; $c = __DIR__; $g = __NAMESPACE__; echo "取得行程式的行號{$a}<br>"; echo "取得文件在本機的路徑與名{$b}<br>"; echo "取得文件在本機的路徑{$c}<br>"; class test { public function fun(){ $d = __FUNCTION__; echo"取得函數的名稱{$d}<br>"; } public function meth(){ $e = __CLASS__; $f = __METHOD__; echo"取得類別名稱{$e}<br>"; echo"取得類别的方法名稱{$f}<br>"; } } $obj = new test(); $obj->fun(); $obj->meth(); echo "取得區分大小寫命名空間名稱{$g}"; ``` * $obj->a調用物件方法 * $obj=>a指定陣列key=>value * $obj::取得靜態常數 ### 資料類型 * var_dump() 變數 * print_r() 陣列 * gettype() Boolean ### print & echo print 會返回值 echo 輸出完就結束 ## MySQL 關聯式資料庫 ### 環境建置 新增 `phpmyadmin.web111a.com:6080` * xampp/apache/conf/extra/httpd-vhost.conf * 路徑:xampp/phpMyAdmin * Windows/System32/drivers/etc/hosts 如有必要新增環境變數 ```shell= xampp/mysql/bin/mysql.exe ``` 目前是沒有密碼的 ![使用者帳號](https://i.imgur.com/wL3UZRe.png) 新增使用者帳號,為了 DEMO 使用請新增可用外部連線 root:`root@%`,記得執行,可以注意到上方有執行的 sql ![指令](https://i.imgur.com/GjXNrN5.png) 新增完會被登出 ![登出](https://i.imgur.com/TaKYXgh.png) 更改 phpmyadmin config,路徑:xampp/phpMyAdmin/config.inc.php ![更改組態](https://i.imgur.com/8x8Mofo.png) 改以下兩行 ```php= $cfg['Servers'][$i]['auth_type'] = 'http'; ... $cfg['Servers'][$i]['passwrod'] = '<passwrod>'; ``` ### 登入 ```shell= mysql -u<user> -p<password> -P<port> ```