步骤
- 连接sql服务器
- 查询指定数据库,指定表的内容
- 格式化输出内容
- 实现对记录的简单操作
- 删除
- 编辑
连接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();
}
?>