前面已經建立在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 —獲取異常信息
  
  
}
?>

image

 

這樣表示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>";
}*/

?>

 

執行後如下

image

接下來的部分就不附上圖片,請依照需求進行修改,如果前面資料表的部分是完全依照前面的教學,可以直接複製貼上一樣可以執行

上方的圖片已將資料表的所有資料列出,可以觀察下方程式碼來學習,基本概念就是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";

?>

 

 

arrow
arrow
    創作者介紹
    創作者 凶王 的頭像
    凶王

    凶王的部落

    凶王 發表在 痞客邦 留言(0) 人氣()