PHP連接SQL服務器,實現對記錄的查看,編輯,刪除功能

步驟

  1. 連接sql服務器
  2. 查詢指定數據庫,指定表的內容
  3. 格式化輸出內容
  4. 實現對記錄的簡單操作
    • 刪除
    • 編輯

連接sql服務器

這裏使用的是統一接口PDO來訪問數據庫,連接一個數據庫首先要知道數據庫服務器的地址,博主使用的是mysql,默認端口爲3306,然後需要一個用戶名和對應的密碼,PDO還需要指定數據庫服務器類型。

$dsn = "mysql:localhost:3306;database"
//分別是數據庫類型,冒號斷開,服務器地址,分號斷開,數據庫名稱(可以先不指定數據庫)
$pdo = new PDO($dsn,$username,$pwd)//實例化PDO

這樣就可以創建一個PDO對象
來測試一下

<?php
echo "<h1>測試sql服務器連接</h1>";
$dbms='mysql';//指定數據庫服務器類型
$dbname='S1_student_copy';//指定數據庫
$username='root';//用戶名
$passwd='******';//用戶名密碼
$host='localhost:3306';//服務器地址

$dsn="$dbms:host=$host;dbname=$dbname";//構造結構,可以不指定數據庫
try {
    $pdo=new PDO($dsn,$username,$passwd);//實例化PDo
    echo "連接成功<br>";
} catch (Exception $exc) {
    echo $exc ->getMessage();
}
?>

在這裏插入圖片描述

顯示錶記錄

這裏需要向數據庫查詢記錄,PDO對象可以是使用query方法或者prepare準備一個PDOstatement對象,再使用PDOstatement對象的execute方法。prepare提供一種更靈活的查詢方式,可以帶參數查詢
(1) query方法

    $pds = $pdo ->query("select * from sc");//執行查詢操作
    $data = $pds-> fetchAll(PDO::FETCH_ASSOC);
    print_r($data);

(2)prepare方法

	$ps = $pdo ->prepare("select * from sc where CID=?");//執行查詢操作
    $ps-> execute(array('231454'));
    $b = $ps->fetchAll();
    print_r($b);

博主在這裏使用的是query方法查詢了sc數據表的內容
在這裏插入圖片描述
格式化輸出一下,

    $pds = $pdo ->query("select * from sc");//執行查詢操作
    $data = $pds-> fetchAll(PDO::FETCH_ASSOC);
    print_r($data);
    echo "成績表數據如下<hr>";
    echo "<table border=1 width=100%> ";
    echo "<tr><td>課程號</td>";
    echo "<td>學號</td>";
    echo "<td>成績</td>";
    echo "<td>操作</td>";
    foreach($data as $r =>$v){
        echo "<tr><td>".$v['CID']."</td>";
        echo "<td>".$v['SID']."</td>";
        echo "<td>".$v['Scores']."</td>";
    }

在這裏插入圖片描述

簡單操作

思路打開是這樣的,再寫一個php文件edit.php來操作數據
在這裏插入圖片描述
然後在顯示網頁index.php的輸出表格里面添加兩個鏈接

    foreach($data as $r =>$v){
        echo "<tr><td>".$v['CID']."</td>";
        echo "<td>".$v['SID']."</td>";
        echo "<td>".$v['Scores']."</td>";
        echo '<td><a href="edit.php?op=1&&sid='.$v['SID'].'">編輯 | </a>';
        echo '<td><a href="edit.php?op=2&&sid='.$v['SID'].'"> 刪除 </a>'; 
    }
  • 編輯會發送op=1和當前記錄的學號
  • 刪除會發送op=2和當前記錄的學號
    在這裏插入圖片描述
    然後來寫edit.php文件,首先還是先連接數據庫。
<?php
echo "<h1>測試sql服務器連接</h1>";
$dbms='mysql';//指定數據庫服務器類型
$dbname='S1_student_copy';//指定數據庫
$username='root';//用戶名
$passwd='******';//用戶名密碼
$host='localhost:3306';//服務器地址

$dsn="$dbms:host=$host;dbname=$dbname";//構造結構,可以不指定數據庫
try {
    $pdo=new PDO($dsn,$username,$passwd);//實例化PDo
    echo "連接成功<br>";
} catch (Exception $exc) {
    echo $exc ->getMessage();
}
?>

然後獲取操作代碼和指定學號

    $op=$_GET["op"];
    $sid=$_GET["sid"];
  • 然後是刪除操作
if ($op == 2) {
        $pdo->exec("delete from sc where SID=$sid");
        echo '<script>window.location = "index.php";</script>';
    }
  • 編輯
elseif($op == 1){
        if(count($_POST)==0){
            echo'<form action=edit.php?op=1&&sid='.$sid.' method=post>課程號<input type="text.php" name="CID">學號<input type="text.php"name="SID">成績<input type="text.php" name="Scores">';
            echo'<br><input type=submit value="保存">';
            exit;
        }
        $newcid=$_POST['CID'];
        $newsid=$_POST['SID'];
        $newscores=$_POST['Scores'];
        //print_r($_POST);
        $pdo->exec('update sc set CID='."$newcid".',SID='."$newsid".',Scores='."$newscores".' where SID='."$sid");
        echo '<script>window.location = "index.php";</script>';
        //echo('update sc set CID='."$newcid".',SID='."$newsid".',Scores='."$newscores".' where SID='."$sid");
        
    }

當點擊編輯按鈕,跳轉到edit.php並攜帶操作代碼1,和學號,根據操作代碼1,首先測試是否有post數據,發現沒有,顯示錶單
在這裏插入圖片描述
提交數據點擊保存,會將三個數據post和操作代碼1和原來的學號發送給本頁面,本頁面再次檢測是否有post數據,發現有數據,執行編輯操作

最後的代碼

index.php
<?php
echo "<h1>測試sql服務器連接</h1>";
$dbms='mysql';//指定數據庫服務器類型
$dbname='S1_student_copy';//指定數據庫
$username='root';//用戶名
$passwd='*****';//用戶名密碼
$host='localhost:3306';//服務器地址
$dsn="$dbms:host=$host;dbname=$dbname";//構造結構,可以不指定數據庫
try {
    $pdo=new PDO($dsn,$username,$passwd);//實例化PDo
    echo "連接成功<br>";
    //$pdo->exec("create database test;");
    //$pdo->exec("drop database test;");

    // $ps = $pdo ->prepare("select * from sc");//執行查詢操作
    // $ps-> execute();
    // $b = $ps->fetchAll();
    // print_r($b);
    $pds = $pdo ->query("select * from sc");//執行查詢操作
    $data = $pds-> fetchAll(PDO::FETCH_ASSOC);
    print_r($data);
    echo "成績表數據如下<hr>";
    echo "<table border=1 width=100%> ";
    echo "<tr><td>課程號</td>";
    echo "<td>學號</td>";
    echo "<td>成績</td>";
    echo "<td>操作</td>";
    foreach($data as $r =>$v){
        echo "<tr><td>".$v['CID']."</td>";
        echo "<td>".$v['SID']."</td>";
        echo "<td>".$v['Scores']."</td>";
        echo '<td><a href="edit.php?op=1&&sid='.$v['SID'].'">編輯 | </a>';
        echo '<td><a href="edit.php?op=2&&sid='.$v['SID'].'"> 刪除 </a>'; 
    }
} catch (Exception $exc) {
    echo $exc ->getMessage();
}
?>
edit.php
<?php
echo "<h1>測試sql服務器連接</h1>";
$dbms='mysql';//指定數據庫服務器類型
$dbname='S1_student_copy';//指定數據庫
$username='root';//用戶名
$passwd='******';//用戶名密碼
$host='localhost:3306';//服務器地址
$dsn="$dbms:host=$host;dbname=$dbname";//構造結構,可以不指定數據庫
try {
    $pdo=new PDO($dsn,$username,$passwd);//實例化PDo
    echo "連接成功<br>";
    //$pdo->exec("create database test;");
    //$pdo->exec("drop database test;");
    $op=$_GET["op"];
    $sid=$_GET["sid"];
    //print_r($_GET);
    if ($op == 2) {
        $pdo->exec("delete from sc where SID=$sid");
        echo '<script>window.location = "index.php";</script>';
    }elseif($op == 1){
        if(count($_POST)==0){
            echo'<form action=edit.php?op=1&&sid='.$sid.' method=post>課程號<input type="text.php" name="CID">學號<input type="text.php"name="SID">成績<input type="text.php" name="Scores">';
            echo'<br><input type=submit value="保存">';
            exit;
        }
        $newcid=$_POST['CID'];
        $newsid=$_POST['SID'];
        $newscores=$_POST['Scores'];
        //print_r($_POST);
        $pdo->exec('update sc set CID='."$newcid".',SID='."$newsid".',Scores='."$newscores".' where SID='."$sid");
        echo '<script>window.location = "index.php";</script>';
        //echo('update sc set CID='."$newcid".',SID='."$newsid".',Scores='."$newscores".' where SID='."$sid");
        
    }
} catch (Exception $exc) {
    echo $exc ->getMessage();
}
?>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章