1.2 連接數據庫
通過PHP做MySQL的客戶端
在php.ini中開啟mysqli擴展
extension=php_mysqli.dll
- 開啟擴展后重啟服務器,就可以使用mysqli_函數了,
創建news數據庫
-- 創建表
drop table if exists news;
create table news(id int unsigned auto_increment primary key comment '主鍵',title varchar(20) not null comment '標題',content text not null comment '內容',createtime int not null comment '添加時間'
)engine=innodb charset=utf8 comment '新聞表';-- 插入測試數據
insert into news values (null,'鋤禾','鋤禾日當午',unix_timestamp());
insert into news values (null,'草','離離原上草',unix_timestamp());
思考:時間字段可以用datetime類型,也可以使用int類型。一般用int,因為datetime占用8個字節,int占用4個字節。
連接數據庫
mysqli_connect(主機IP,用戶名,密碼,數據庫名,端口號) //如果端口號是3306可以省略
mysqli_connect_error():獲取連接數據庫的錯誤信息
mysqli_connect_errno():獲取連接數據庫的錯誤編碼
mysqli_set_charset(連接對象,字符編碼)
代碼如下:
<?php
//連接數據庫,連接成功返回連接對象
$link=@mysqli_connect('localhost','root','root','data','3306');
//var_dump($link); //object(mysqli)
if(mysqli_connect_error()){echo '錯誤號:'.mysqli_connect_errno(),'<br>'; //顯示錯誤編碼echo '錯誤信息:'.mysqli_connect_error(); //顯示錯誤信息exit;
}
//設置字符編碼
mysqli_set_charset($link,'utf8');
腳下留心:與數據庫相關用utf8,與頁面顯示相關用utf-8
1.3 操作數據
通過mysqli_query()執行SQL語句
增、刪、改語句執行成功返回true,失敗返回false
<?php
//1、連接數據庫
$link=mysqli_connect('localhost','root','root','data');
//2、設置支付編碼
mysqli_set_charset($link,'utf8');
//3、執行SQL語句//3.1 執行insert語句
/*
$rs=mysqli_query($link,"insert into news values (null,'靜夜思','床前明月光',unix_timestamp())");
if($rs)echo '自動增長的編號是:'.mysqli_insert_id($link);
*///3.2 執行update語句
/*
$rs=mysqli_query($link,"update news set content='疑是地上霜' where id=4");
if($rs)echo '受影響的記錄數是:'.mysqli_affected_rows($link);
else{echo '錯誤碼:'.mysqli_errno($link),'<br>';echo '錯誤信息:'.mysqli_error($link);
}
*///3.3 執行delete語句
mysqli_query($link,"delete from news where id=5");
用到的函數
mysqli_query():執行SQL語句
mysqli_insert_id():獲取插入記錄自動增長的ID
mysqli_affected_rows():獲取受影響的記錄數
mysqli_error():獲取執行SQL語句的錯誤信息
mysqli_errno():獲取執行SQL語句的錯誤碼
數據查詢用select、desc、show,成功會返回結果集,失敗返回false
<?php
//1、連接數據庫
$link=@mysqli_connect('localhost','root','root','data') or die('錯誤信息:'.mysqli_connect_error());
//2、設置字符編碼
mysqli_query($link,'set names utf8');
//3、執行查詢語句
$rs=mysqli_query($link,'select * from news');
//var_dump($rs); //object(mysqli_result)
//4、獲取對象中的數據
//4.1 將對象中的一條數據匹配成索引數組,指針下移一條
//$rows=mysqli_fetch_row($rs);//4.2 將對象中的一條數據匹配成關聯數組,指針下移一條
//$rows=mysqli_fetch_assoc($rs);//4.3 將對象中的一條數據匹配成索引,關聯數組,指針下移一條
//$rows=mysqli_fetch_array($rs);//4.4 總列數、總行數
//echo '總行數'.mysqli_num_rows($rs),'<br>';
//echo '總列數'.mysqli_num_fields($rs),'<br>';//4.5 獲取所有數據
//$list=mysqli_fetch_all($rs); //默認是索引數組
//$list=mysqli_fetch_all($rs,MYSQLI_NUM); //匹配成索引數組
//$list=mysqli_fetch_all($rs,MYSQLI_ASSOC); //匹配成關聯數組
$list=mysqli_fetch_all($rs,MYSQLI_BOTH); //匹配成關聯、索引數組echo '<pre>';
print_r($list);//5、銷毀結果集
mysqli_free_result($rs);//6、關閉連接
mysqli_close($link);
使用的函數
mysqli_fetch_assoc():將一條數組匹配關聯數組
mysqli_fetch_row():將一條記錄匹配成索引數組
mysqli_fetch_array():將一條記錄匹配成既有關聯數組又有索引數組
mysqli_fetch_all():匹配所有記錄
mysqli_num_rows():總行數
mysqli_num_fields():總記錄數
mysqli_free_result():銷毀結果集
mysqli_close():關閉連接
1.4 新聞模塊實戰
由于所有的操作都要連接數據庫,將連接數據庫的代碼存放到包含文件中
步驟
1、在站點下創建inc文件夾
2、在inc下創建conn.php文件,用來連接數據庫,代碼就是上面連接數據庫的代碼
代碼實現
<?php
//連接數據庫
$link=@mysqli_connect('localhost','root','root','data') or die('錯誤:'.mysqli_connect_error());
mysqli_set_charset($link,'utf8');
步驟:
1、連接數據庫
2、獲取數據
3、遍歷循環數據
代碼
<style type="text/css">table{width:780px;border:solid 1px #000;margin:auto;}th,td{border:solid 1px #000;}
</style>
<body>
<?php
//1、連接數據庫
require './inc/conn.php';
//2、獲取數據
$rs=mysqli_query($link,'select * from news order by id desc'); //返回結果集對象
$list=mysqli_fetch_all($rs,MYSQLI_ASSOC); //將結果匹配成關聯數組
?>
<table><tr><th>編號</th> <th>標題</th> <th>內容</th> <th>時間</th> <th>修改</th> <th>刪除</th><!--3、循環顯示數據--><?php foreach($list as $rows):?><tr><td><?php echo $rows['id']?></td><td><?php echo $rows['title']?></td><td><?php echo $rows['content']?></td><td><?php echo date('Y-m-d H:i:s',$rows['createtime'])?></td><td><input type="button" value="修改" οnclick=""></td><td><input type="button" value="刪除" οnclick=""></td></tr><?php endforeach;?></tr>
</table>
</body>
運行結果
步驟:
1、創建表單
2、連接數據庫
3、將新聞數據寫入到數據庫中
入口(list.php)
<a href="./add.php">添加新聞</a>
代碼實現
<body>
<?php
if(!empty($_POST)) {//2、連接數據庫require './inc/conn.php';//3、插入數據$time=time(); //獲取時間戳$sql="insert into news values (null,'{$_POST['title']}','{$_POST['content']}',$time)"; //拼接SQL語句if(mysqli_query($link,$sql)) //執行SQL語句header('location:./list.php'); //插入成功就跳轉到list.php頁面else{echo 'SQL語句插入失敗<br>';echo '錯誤碼:'.mysqli_errno($link),'<br>';echo '錯誤信息:'.mysqli_error($link);}
}
?>
<!--1、創建表單-->
<form method="post" action="">標題: <input type="text" name="title"> <br /> <br />內容: <textarea name="content" rows="5" cols="30"></textarea> <br /> <br /><input type="submit" name="button" value="提交">
</form>
</body>
運行結果
步驟:
1、在list.php頁面點擊刪除按鈕,跳轉到del.php頁面,傳遞刪除的id
2、在del.php頁面連接數據庫
3、通過id刪除數據
4、刪除成功后,跳轉到list.php
入口(list.php)
<input type="button" value="刪除" οnclick="if(confirm('確定要刪除嗎'))location.href='./del.php?id=<?php echo $rows['id']?>'">
- 1
del.php
<?php
//1、連接數據庫
require './inc/conn.php';
//2、拼接SQL語句
$sql="delete from news where id={$_GET['id']}";
//3、執行SQL語句
if(mysqli_query($link,$sql))header('location:./list.php');
else{echo '刪除失敗';
}
小結:
1、一個頁面是否寫HTML架構,取決于是否有顯示功能。
2、如果一個頁面只是做業務邏輯,沒有顯示功能,就不需要寫HTML架構,比如del.php頁面
入口(list.php)
<input type="button" value="修改" οnclick="location.href='edit.php?id=<?php echo $rows['id']?>'">
- edit.php頁面
步驟
第一步:顯示修改界面
? 1、連接數據庫
? 2、獲取修改的數據
? 3、將數據顯示到表單中
第二步:執行修改邏輯
? 1、獲取新數據
? 2、拼接修改的SQL語句,執行修改邏輯
代碼如下
<?php
//連接數據庫
require './inc/conn.php';
//1、獲取修改的數據庫
$sql="select * from news where id={$_GET['id']}"; //拼接SQL語句
$rs=mysqli_query($link,$sql); //獲取修改的數據
$rows=mysqli_fetch_assoc($rs); //將修改的數據匹配成一維關聯數組
//2、執行修改的邏輯
if(!empty($_POST)) {$id=$_GET['id']; //獲取修改的id$title=$_POST['title']; //修改的標題$content=$_POST['content']; //修改的內容$sql="update news set title='$title',content='$content' where id=$id"; //拼接SQL語句if(mysqli_query($link,$sql))header('location:list.php'); //修改成功跳轉到list.php頁面elseecho '錯誤:'.mysqli_error($link);exit;
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>無標題文檔</title>
</head><body>
<form method="post" action="">標題: <input type="text" name="title" value='<?php echo $rows['title']?>'> <br /> <br />內容: <textarea name="content" rows="5" cols="30"><?php echo $rows['content']?></textarea> <br /> <br /><input type="submit" name="button" value="提交"><input type="button" value="返回" οnclick="location.href='list.php'">
</form>
</body>
</html>
運行結果
?
?
?
?
?
?