前面已經建立在PHPADMIN建立好資料表格式了,現在要開始寫PHP,對SQL的資料做動作
首先要先建立對SQL的DB進行連線,因為PHP語法一直在進步,所以這邊會以相對穩定的PDO語法,避免以後舊有的PHP語法被淘汰不能使用
請記得用樹梅派作為SERVER的人要將連線的檔案放在/var/www/html 的路徑下,不然沒辦法正常運作
我在該路徑下創建的檔案名為connecttest2.php
將下方的程式碼複製貼上到你創建的檔案中並儲存,接著如下圖在瀏覽器輸入IP/你的檔案名稱
如果成功會跳出 Connected successfully
<?php
//PDO version
$servername = "192.168.64.35";
$username = "XXXXX"; // 輸入你登入PHPADMIN的帳密
$password = "XXXXX";
$dbName = "testdb"; //輸入你資料表所在的資料庫
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbName", $username, $password);
// set the PDO error mode to exception //PDO::ATTR_ERRMODE 錯誤報告,PDO::ERRMODE_EXCEPTION 表示 PDO 生成的錯誤
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
echo "<br>";
} catch(PDOException $e) {//表示 PDO 生成的錯誤
echo "Connection failed: " . $e->getMessage();//getMessage —獲取異常信息
}
?>
這樣表示SQL的連線就建立完成了
接著是主要的四大功能 查詢,刪除,新稱,修改
首先是查詢
<?php
require_once 'connecttest2.php';
//總筆數
$sql = "SELECT ID,NAME,BOOKNAME,CASH,DATETIME FROM bookstore ORDER BY ID DESC";
//為將使用不同參數多次執行的語句 調用PDO::prepare()和 PDOStatement::execute()通過
//允許驅動程序協商客戶端和/或服務器端緩存計劃查詢和元信息來優化應用程序性能
//,並有助於防止SQL 注入通過消除手動引用參數的需要。
$result = $conn->prepare($sql);
$result->execute();
$numRows = $result->rowCount();
echo "總筆數:";
echo $numRows;
echo "<br>";
//
$sql = "SELECT ID,NAME,BOOKNAME,CASH,DATETIME FROM bookstore ORDER BY ID DESC ";
$result = $conn->prepare($sql);
$result ->execute();
//方法一
while($row = $result->fetch(PDO::FETCH_NUM)) {
echo $row[0];
echo $row[1];
echo $row[2];
echo $row[3];
echo $row[4];
echo"<br>";
}
//方法二
/*
while($row = $result->fetch(PDO::FETCH_ASSOC)) {
echo $row['ID'];
echo $row['NAME'];
echo $row['ADDRESS'];
echo $row['CASH'];
echo"<br>";
}*/
?>
執行後如下
接下來的部分就不附上圖片,請依照需求進行修改,如果前面資料表的部分是完全依照前面的教學,可以直接複製貼上一樣可以執行
上方的圖片已將資料表的所有資料列出,可以觀察下方程式碼來學習,基本概念就是SQL的語法在PHP裡面都是作為字串包起來在送到
SQL那邊,然後SQL收到正確的語句後再執行,如果語句有錯就不會有動作,保險的作法就是先在PHPADMIN裡面測試你要在PHP裡面要包覆的
語法,如果可以執行在放到PHP裡面
接著是新增
<?php
require_once 'connecttest2.php';
$sql = "INSERT INTO bookstore (NAME,BOOKNAME,CASH,DATETIME)
VALUES ('RUSH','OPENCV','800','2022-01-12 09:09:09')";
// 使用 exec() ,没有结果返回
$conn->exec($sql);
echo "新记录插入成功";
?>
接著是刪除
<?php
require_once 'connecttest2.php';
// sql to delete a record
$sql = "DELETE FROM bookstore WHERE ID = 2";
// use exec() because no results are returned
$conn->exec($sql);
echo "Record deleted successfully";
?>
接著是修改
<?php
require_once 'connecttest2.php';
date_default_timezone_set('Asia/Taipei'); //設定時區
$now = date("Y-m-d H:i:s");
$sql="UPDATE bookstore SET NAME='PUCHI',BOOKNAME='JTAG'
,CASH='666',DATETIME ='$now' WHERE ID='2' ";
$conn->exec($sql);
echo "Record update successfully";
?>