步驟
- 連接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();
}
?>