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();
}
?>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章