下期第4堂-遠端通訊 ~ 使用PHP+MySQL伺服器
上週回顧
DNS
命令字元反查 nslookup
試查台大Web的IP
何謂反查?
難道知道IP可以反查?
試試 23.7.172.76
路由指令
tracert
試試看 女中、台大、mit的路由
節點
路由的節點,連線問題就是從節點去抓
安裝XAMPP
安裝VSCode
第1個PHP程式
<?php
echo 'hello world';
?>
第2個程式
變數要用 $ 開頭
<?php
for ($i = 0; $i < 3; $i++) {
echo $i . '<br>';
}
?>
學這麼多語言會搞混嗎?
一定會,就是要訓練你,
當搞混的時候,可以如何處理?
會PHP有何好處?
想一下,這些文字出現在哪裡?
HTTP的GET請求
第3個程式
<?php
if (isset($_GET['username'])) {
$u = $_GET['username'];
echo $u;
}
?>
小測驗
結合2+3個程式,利用網址控制顯示的數字
<?php
if (isset($_GET['j'])) {
$j = $_GET['j'];
for ($i = 0; $i <= $j; $i++) {
echo $i . '<br>';
}
}
?>
進入資料庫的世界!
連結遠端MySQL資料庫
$host = '59.127.';
$dbuser ='h';
$dbpassword = 'my';
$dbname = 'my2';
$link = mysqli_connect($host,$dbuser,$dbpassword,$dbname);
if($link){
//mysqli_query($link,'SET NAMES uff8');
echo "正確連接資料庫";
}
else {
echo "不正確連接資料庫</br>" . mysqli_connect_error();
}
查詢資料
<?php
// 列出資料
require_once 'db.php';
// 設置一個空陣列來放資料
$datas = array();
// sql語法存在變數中
$sql = "SELECT `id`, `name` , `note` FROM `friend` AS userData WHERE `id`>0 ";
// 用mysqli_query方法執行(sql語法)將結果存在變數中
$result = mysqli_query($link,$sql);
// 如果有資料
if ($result) {
// mysqli_num_rows方法可以回傳我們結果總共有幾筆資料
if (mysqli_num_rows($result)>0) {
// 取得大於0代表有資料
// while迴圈會根據資料數量,決定跑的次數
// mysqli_fetch_assoc方法可取得一筆值
while ($row = mysqli_fetch_assoc($result)) {
// 每跑一次迴圈就抓一筆值,最後放進data陣列中
$datas[] = $row;
}
}
// 釋放資料庫查到的記憶體
mysqli_free_result($result);
}
else {
echo "{$sql} 語法執行失敗,錯誤訊息: " . mysqli_error($link);
}
// 處理完後印出資料
if(!empty($result)){
// 如果結果不為空,就利用print_r方法印出資料
print_r($datas);
}
else {
// 為空表示沒資料
echo "查無資料";
}
?>
<h3>foreach列出查詢結果</h3>
<div>
<?php if(!empty($datas)): ?>
<ul>
<!-- 資料 as key(下標) => row(資料的row) -->
<?php foreach ($datas as $key => $row) :?>
<li>
第<?php echo($key +1 ); ?> 筆資料,帳號<?php echo $row['id']; ?>,名字 <?php echo $row['name']; ?>
</li>
<?php endforeach; ?>
</ul>
<?php else: ?>
查無資料
<?php endif; ?>
</div>
<!-- 代表結束連線 -->
<?php mysqli_close($link); ?>
插入資料
<?php
// 插入資料
require_once 'db.php';
?>
<h3>sql插入結果</h3>
<?php
// sql語法存在變數中
$sql = "INSERT INTO `friend` (`id`,`name`, `note`) VALUE ('20566','毛毛','恭喜發財') ";
// 用mysqli_query方法執行(sql語法)將結果存在變數中
$result = mysqli_query($link,$sql);
// 如果有異動到資料庫數量(更新資料庫)
if (mysqli_affected_rows($link)>0) {
// 如果有一筆以上代表有更新
// mysqli_insert_id可以抓到第一筆的id
$new_id= mysqli_insert_id ($link);
echo "新增後的id為 {$new_id} ";
}
elseif(mysqli_affected_rows($link)==0) {
echo "無資料新增";
}
else {
echo "{$sql} 語法執行失敗,錯誤訊息: " . mysqli_error($link);
}
mysqli_close($link);
?>