PHP全棧學習筆記12

image.png

php簡介,php歷史,php後端工程師職業前景,php技術方向,php後端工程師職業體系介紹。javascript

php是世界上使用最普遍的web開發語言,是超文本預處理器,是一種通用的開源腳本語言,語法吸取了c語言,Java語言,和Perl的特色,利於學習,使用普遍,主要適用於web開發,PHP作出來的動態頁面與其餘的編程語言相比,PHP是將持續嵌入到HTML文檔中去執行,執行效率比徹底生成HTML標記的CGI要高許多,PHP還能夠執行編譯後的代碼,編譯後能夠達到加密和優化代碼的目的,讓代碼運行更快。php

PHP是在1994年由Rasmus Lerdorf建立的,開始只是一個簡單的用Perl語言編寫的程序,用來統計他本身的網站的訪問者,後來經過c語言的重寫編寫,能夠訪問數據庫,1995年開始對外發布第一個版本,名Personal Home Page Tools,隨後發佈了php 1.0版本。html

1995年,php2.0發佈了。1997年,php3發佈,2004年,PHP5.0發佈了。前端

PHP的使用更加普遍,web3.0的升溫,PHP是優秀的web開發語言,linux,apache,mysql黃金組合。java

web後端技術,web前端技術與PHP語言,linux操做系統,mysql數據庫,各類php開發框架,緩存技術和海量數據優化技術,系統調優和負載均衡技術。mysql

HTML入門,JavaScript入門,PHP語言基礎,源碼管理工做,mysql數據庫。linux

Linux操做系統,PHP面向對象,語言高級開發技術,經常使用PHP開發框架,PHP與公共api接口開發,PHP測試工具。web

深刻學習http協議,PHP環境高級配置,mysql數據庫優化技術,靜態化和緩存技術,網站安全技術。sql

深刻分析PHP框架源代碼,深刻學習PHP內核,noSQL型數據庫,集羣與負載均衡技術。數據庫

深刻學習Linux操做系統,多級緩存技術,海量數據優化技術,容災技術,大型系統框架設計方法。

數據庫PDO簡介:

pdo簡介,安裝與配置,pdo連接數據庫,pdo對象方法介紹以及使用,pdostatement對象方法介紹以及使用,pdo錯誤處理,pdo參數綁定與預處理,pdo事務處理,pdo實戰。

pdo是數據庫訪問抽象層,統一各類數據庫的訪問接口。

pdo特性,編碼一致性,靈活性,高性能,面向對象特性。

image.png

開啓pdo:

extension = php_pdo.dll
複製代碼
extension = php_pdo_mysql.dll
複製代碼

經過參數形式鏈接,經過uri形式鏈接,經過配置文件形式鏈接數據庫。

<?php
// 經過參數形式鏈接數據庫
try {
 $dsn = 'mysql:host=localhost; dbname=dashucoding';
 $username=‘root’;
 $passwd='root';
 $pdo=new PDO($dsn, $username, $passwd);
 var_dump($pdo);
}catch(PDOException $e){
 echo $e -> getMessage();
}
複製代碼

image.png

<?php
// 經過uri的形式鏈接數據庫
try {
 $dsn='uri:file//文件路徑\dsn.txt';
 $username='root';
 $passwd='root';
 $pdo = new PDO($dsn, $username, $password);
 var_dump($pdo);
}catch(PDOException $e){
 echo $e->getMessage();
}
複製代碼
mysql:dbname=dashucoding; host=localhost
複製代碼

image.png

插入記錄操做

<?php
try{
$pdo = new PDO('mysql:host=localhost;dbname='dashucoding','root','root'); // exec對select沒有做用 // exec()執行一條語句並返回其受影響的記錄條數 $sql = <<<EOF CREATE TABLE IF NOT EXISTS user( id INT UNSIGNED AUT_INCREMENT key, username varchar(20) not null unique, password CHAR(32) not null, email varchar(30) not null ); EOF; $res = $pdo -> exec($sql); var_dump($res); $sql='insert user(username,password,email) values ('dashu',"'.md5('dashu').'","23@qq.com")')); }catch(PDOException $e){ echo $e -> getMessage(); } 複製代碼

errorCode()和errorInfo()方法查看錯誤信息

<?php
header('content-type:text/html; charset=utf-8');

try{
$pdo = new PDO('mysql:host=localhost; dbname=dashucoding', 'root', 'root');
$res = $pdo->exec($sql);
var_dump($res);
 if($res === false){
  echo $pdo -> errorCode();
  echo '<br/>';
  echo $pdo -> errorInfo();
  print_r($errInfo);
  }
}catch(PDOException $e){
echo $e->getMessage();
}
複製代碼

query()方法執行查詢語句

<?php
header('content-type:text/html; charset=utf-8');
try{
 $pdo = new PDO('mysql:host=localhost; dbname=dashucoding', 'root', 'root');
 $sql = 'select * from user where id = 3';
 $stmt = $pdo -> query($sql);
 var_dump($stmt);
 foreach($stmt as $row){
 }

}catch(PDOException $e){
 echo $e -> getMessage();
}
複製代碼

image.png

瞭解pdo,鏈接數據庫的方法,pdo中執行sql語句的方法,pdo中獲取結果集的方法,掌握pdo中獲取sql語句中的錯誤,錯誤處理的方法,事務處理,pdo中存儲過程。

pdo是PHP數據對象。

pdo是一個數據庫訪問抽象層,能夠統一各類數據庫的訪問接口。

安裝pdo,linux環境下,要使用mysql數據庫configure命令:

--with-pdo-mysql=/path/to/mysql/installation
複製代碼

pdo鏈接數據庫:

<?php
$dbms = 'mysql';
$dbName = 'db_database';
$user = 'root';
$pwd = 'root';
$host = 'localhost';
$dsn = "$dbms:host=$host; dbname=$dbName";
try{
 $pdo = new PDO($dsn, $user, $pwd);
 echo "pdo鏈接mysql成功";
}catch(Exception $e){
echo $e -> getMessage()."<br>";
}
?>
複製代碼

dsn:數據源名稱 username:鏈接數據庫的用戶名 password:鏈接數據庫的密碼 driver_options:鏈接數據庫的其餘選項

<?php
header('Content-Type:text/html; charset=utf-8"); $dbms='mysql'; $dbName='db_database'; $user='root'; $pwd='root'; $host='localhost'; $dsn="$dbms:host=$host;dbname=$dbName"; try{ $pdo=new PDO($dsn, $uer, $pwd); echo "PDO鏈接Mysql成功"; }catch(Exception $e){ echo $e->getMessage()."<br>"; } ?> 複製代碼

dsn爲數據源,提供鏈接數據庫須要的信息。

pdo執行sql語句:

exec()方法
exec 方法返回執行sql語句後受影響的行數
int PDO::exec(string statement)
參數statement要執行的sql語句
複製代碼

通用insert,delete和update

<?php
$dbms = 'mysql';
$dbName='db_database';
$user='root';
$pwd='root';
$host='localhost';
$dsn = "$dbms:host=$host; dbname=$dbName";
$query="delete from tb_da where id=2"; // sql語句
try{
$pdo = new PDO($dsn, $user, $pwd);
$affCount=$pdo -> exec($query);
echo "刪除條數".$affCount;
}catch(Exception $e){
echo "".$e->getMessage()."<br>";
}
?>
複製代碼

query()方法

query()方法一般用於返回執行查詢後的結果集

PDOStatement PDO::query(string statement)
複製代碼
<table width="200" border="0" bgcolor="#FF3377">
 <tr>
 <td></td>
 </tr>
</table>

<?php
$dbms = 'mysql';
$dbName='db_database';
$user='root'
$pwd='root';
$dsn="$dbms:host=$host; dbname=$dbName";
$query = "select * from tb_da";
try{
$pdo = new PDO($dsn, $user, $pwd);
$result=$pdo->query($query); // 輸出結果集中的數據
foreach($result as $row){ // 輸出結果集中的數據

}catch(Exception $e){
echo $e->getMessage()."<br>";
}
?>
複製代碼

預處理語句:prepare()和execute() prepare()方法作查詢的準備工做,execute()方法執行查詢,bindParam()方法來綁定參數提供給execute()方法

PDOStatement PDO::prepare(string statement [, array driver_options])
bool PDOStatement::execute([array input_parameters])
複製代碼

prepare()和execute()方法:

<?php
$dbms = 'mysql';
$host = 'localhost';
$dbName = 'db_da';
$user='root';
$pass='root';
$dsn="$dbms:host=$host;dbname=$dbName";
try{
$pdo=new PDO($dsn, $user, $pass);
$query = "select * from tb_mysql";
$result = $pdo->prepare($query);
$result->execute();
while($res = $result->fetch(PDO::FETCH_ASSOC)){

}catch(PDOException $e){
die($e->getMessage()."<br/>");
}
?>
複製代碼

php中獲取結果集的方法

fetch()方法獲取結果集中的下一行數據 fetchAll()方法獲取結果集中的全部行 fetchColumn()方法獲取結果集中下一行指定的列的值

fetch()方法:參數

mixed PDOStatement::fetch( fetch_style, cursor_orientation, int_cursor_offset)
複製代碼

PDO::FETCH_ASSOC關聯數組形式 PDO::FETCH_NUM數字索引數組形式 PDO::FETCH_BOTH二者數組形式都有 PDO::FETCH_OBJ按照對象的形式 PDO::FETCH_BOUND以布爾值的形式返回結果 PDO::FETCH_LAZY 以關聯數組,數字索引,和對象三種形式返回

cursor_orientation:PDOStatement對象的一個滾動遊標 cursor_offset:遊標的偏移量

<?php
$dbms = 'mysql';
$host='localhost';
$dbName='db_database';
$user='root';
$pass='root';
$dsn = "$dbms:host=$host;dbname=$dbName";
try{
$pdo = new PDO($dsn, $user, $pass);
$query = "select * from tb_pdo_mysql";
$result = $pdo->prepare($query);
$result->execute();
while($res=$result->fetch(PDO::FETCH_ASSOC)){
}catch(PDOException $e){
die( $e->getMessage()."<br/>");
}
?>
複製代碼
<?php
$dbms='mysql'; // 數據庫類型,對於開發者來講,使用不一樣的數據庫,只要該這個就行
$host='localhost';
$dbName='db_database';
$user = 'root';
$pass = 'root';
$dsn = "$dbms:host=$host; dbname=$dbName";
try{
 $pdo = new PDO($dsn,$user,$pass);
 $query = "select * from tb_pdo_mysql";
 $result=$pdo->prepare($query);
 $result->execute();
 while($res=$result->fetch(PDO::FETCH_ASSOC){

}catch(PDOException $e){
die( $e -> getMessage() );
}
?>
複製代碼

fetchAll()方法獲取結果集中的全部行

array PDOStatement::fetchAll();
參數fetch_style:控制結果集中數據的返回方式
參數column_index:字段的索引
返回的是包含結果集中全部數據的二維數組
複製代碼
<?php
$dbms = 'mysql';
$host = 'localhost';
$dbName = 'db_database';
$user = 'root';
$pass = 'root';
$dsn = "$dbmms:host=$host; dbname = $dbName";
try{
$pdo = new PDO($dsn, $user, $pass);
$query = "select * from tb_pdo_mysql";
$result=$pdo -> prepare($query);
$result->execute();
$res=$result->fetchAll(PDO::FETCH_ASSOC);
for($i=0;$i<count($res);$i++){
?>
<tr>
<td height="22" align="center" valign="middle"><?php echo $res[$i]['id'];?></td>
<td align="center" valign="middle"><?php echo $res[$i]['pdo_type'];?</td>
</tr>
<?php
}
}catch(PDOException $e){
 die("Error!:".$e->getMessage()."<br/>");
}
?>
複製代碼

fetchColumn()方法

獲取結果集中下一行指定列的值:

string PDOStatement::fetchColumn()
複製代碼

參數column_number設置行中列到的索引值,該值從0開始,省略該參數將從第1列開始取值。

<?php
$dbms = 'mysql';
$host = 'localhost';
$dbName = 'db_database';
$user = 'root';
$pass = 'root';
$dsn = "$dbms:host=$host;dbname=$dbName";
try{
$pdo = new PDO($dsn, $user, $pass);
$query = " select * from tb_pdo_mysql";
$result = $pdo -> prepare($query); // 準備查詢語句
$result -> execute(); // 執行查詢語句
?>
<tr>
<td><?php echo $result->fetchColumn(0);?></td>
<td><?php echo $result->fetchColumn(0);?></td>
<td><?php echo $result->fetchColumn(0);?></td>
<td><?php echo $result->fetchColumn(0);?></td>
</tr>
<?php
 }catch(PDOException $e) {
 die("Error!:".$e->getMessae()."<br/>");
}
?>
複製代碼

pdo中捕獲sql語句中的錯誤

使用默認模式 PDO::ERRMODE_SILENT pdo::errmode_silent

使用警告模式 PDO::ERROMODE_WARNING pdo::erromode_warning

使用異常模式 PDO::ERRMODE_EXCEPTION pdo::errmode_exception

// pdo鏈接數據庫mysql,經過預處理prepare()和execute()方法執行insert添加操做
<?php
if($_POST['Submit']=="提交"&&$_POST['pdo']!=""){
$dbms = 'mysql';// 數據庫類型
$host = 'localhost'; // 數據庫主機名
$dbName = 'db_database'; // 使用的數據庫
$user = 'root'; // 數據庫的鏈接用戶名
$pass = 'root'; // 對應的密碼
$dsn = "$dbms:host=$host; dbname=$dbName";
$pdo = new PDO($dsn, $user, $pass);
$query = "insert into tb_pdo_mysql(pdo_type, database_name,dates) values ("", $_POST['pdo'].", ".$_POST['databases'].",".$_POST['dates'].")"; $result = $pdo->prepare($query); $result -> execute(); $code = $result->errorCode(); if(empty($code)){ echo "數據添加成功!"' }else{ echo "數據添加錯誤:<br/>"; echo 'sql query:'.$query; echo '<pre>'; var dump($result->errorInfo()); echo '</pre>'; }} ?> 複製代碼
// 設置警告模式,經過prepare()和execute()方法讀取數據庫中數據
// setAttribute()方法設置爲警告模式
<?php
$dbms = 'mysql'; // 數據庫類型
$host = 'localhost'; // 數據庫主機名
$dbName = 'db_database'; // 數據庫鏈接用戶名
$user = 'root';
$pass = 'root';
$dsn="$dbms:host=$host; dbname=$dbName";
try{
 $pdo = new PDO($dsn, $user, $pass);
 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); // 設置爲警告模式

$query = "select * from tb_pdo_mysqls"; // 定義sql語句
$result = $pdo -> prepare($query); // 準備查詢語句
$result->execute(); // 執行查詢語句,並返回結果集
while($res=$result->fetch(PDO::FETCH_ASSOC)){
?>
<tr>
 <td><?php echo $res['id'];?></td>
 <td><?php echo $res['date'];?></td>
</tr>
<?php
 } 
 }catch(PDOException $e){
 die("Error!:".$e->getMessage()."<br/>");
}
?>
複製代碼
// 異常模式
<?php
heder("Content-type: text/html; charset="utf-8"); // 設置文件編碼格式 if($_GET['conn_id']!=""){ $dbms = 'mysql';//數據庫類型 $host = 'localhost'; $dbName='db_database'; $user='root'; $pass='root'; $dsn = "$dbms:host=$host; dbname=$dbName"; try { $pdo = new PDO($dsn, $user, $pass); $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $query="delete from tb_pdo_mysqls where Id=:id"; $result = $pdo->prepare($query); // 預準備語句 $result = bindParam(':id', $_GET['conn_id']); // 綁定更新的數據 $result -> execute(); }catch(PDOException $e) { echo 'PDO Exception Caught.'; echo 'Error with the database:<br/>'; echo 'SQL Query:'.$query; echo '<pre>'; echo "Erro:".$e->getMessage()."<br/>"; echo "File:".$e->getCode()."<br/>"; echo "Line:".$e->getFile()."<br/>"; echo "Trace:".$e->getTranceAsString()."<br/>"; echo '</pre>'; }} ?> 複製代碼

pdo中錯誤處理: errorCode()方法和errorInfo()方法

errorCode()方法用於獲取在操做數據庫句柄時所發生的錯誤代碼。

int PDOStatement::errorCode(void)
複製代碼

errorCode()方法返回一個sqlstate代碼。

<?php
$dbms='mysql'; // 數據庫類型
$host='localhost'; // 數據庫主機名
$dbName = 'db_database'; // 使用的數據庫
$user = 'root'; // 數據庫鏈接用戶名
$pass = 'root' 對應的密碼
$dsn = "dbms:host = $host; dbname = $dbName";
try{
$pdo = new PDO($dsn, $user, $pass);
$query = "select * from tb_pdo_mysqls"; // 定義sql語句
$result = $pdo -> query($query); // 執行查詢語句,並返回結果集
echo "errorCode爲: ".$pdo->errorCode();
foreach($result as $items){
?>
<tr>
<td><?php echo $items['id'];?></td>
</tr>
<?php
 }
}catch(PDOException $e){
die("Error!:" . $e->getMessage()."<br/>");
}
?>
複製代碼

errorInfo()方法用於獲取操做數據庫句柄時所發生的錯誤的信息。

array PDOStatement::errorInfo(void)
複製代碼
<?php
$dbms = 'mysql';
$host = 'localhost';
$dbName = 'db_database';
$user = 'root';
$pass = 'root';
$dsn = "$dbms:host=$host; dbname=$dbName";
try{
$pdo = new PDO($dsn, $user, $pass); // 初始化一個pdo對象,建立數據庫鏈接對象$pdo
$query = "select * from tb_pdo_mysqls"; // 定義sql語句
$result = $pdo -> query($query); // 執行查詢語句
print_r($pdo->errorInfo());
foreach($result as $items){
?>
<tr>
<td><?php echo $items['id'];?></td>
<td><?php echo $items['pdo_type'];?></td>
</tr>
<?php
}
}catch(PDOException $e){
die("Error!:".$e->getMessage()."<br/>");
}
?>
複製代碼

pdo中事務處理:

開啓事務:beginTransaction()方法 beginTransaction()方法將關閉自動提交autocommit模式,直到事務提交或者回滾之後才恢復

提交事務:commit()方法 commit()方法完成事務的提交操做,成功返回true,不然爲false

事務回滾:rollBack()方法 經過prepare和execute()方法向數據庫中添加數據,而且經過事務處理機制確保數據可以正確地添加到數據庫中

經過beginTransaction()方法開啓事務 經過$_POST[] 方法獲取表單中提交的數據 經過prepare()和execute()方法向數據庫中添加數據 經過commit()方法完成事務的提交操做 rollBack()方法執行事務的回滾操做

<?php
if($_POST['Submit']=="提交" && $_POST['pdo']!=""){
 $dbms = 'mysql'; //數據庫類型
 $host = 'localhost'; // 數據庫主機名
 $dbName = 'db_database''; // 數據庫 $user='root'; $pass='root'; $dsn = "$dbms:host=$host; dbname=$dbName"; try{ $pdo=new PDO($dsn, $user, $pass); $pdo -> beginTransaction(); // 開啓事務 $query="insert into tb_pdo_mysql(pdo_type, database_name, dates) values ("", $_POST['pdo'].",".$_POST['databases'].",".$_POST['dates'].")"; $result = $pdo->prepare($query); if($result->execute()){ echo "數據添加成功"; }else{ echo "數據添加失敗"; } $pdo->commit(); // 執行事務的提交操做 }catch(PDOException $e){ die("Error!:".$e->getMessage()."<br/>"); $pdo->rollBack(); } } ?> 複製代碼

pdo中存儲過程

pdo中調用存儲過程:

drop procedure if exists pro_reg;
delimiter // 
create procedure pro_reg(in nc varchar(80), in pwd varchar(80), in email varchar(80), in address varchar(50))
begin
insert into ...
end;
// 
複製代碼

用戶註冊:用戶暱稱,註冊密碼,e-mail,家庭地址。

<title>用戶註冊</title>
<form name="form1" method="post" action="index.php"  onsubmit="return chkinput(this)">

</form>

<?php
 if($_POST['submit']!=""){
 	$dbms='mysql';     					//數據庫類型
	$host='localhost'; 					//數據庫主機名
	$dbName='db_database';    		//使用的數據庫
	$user='root';      					//數據庫鏈接用戶名
	$pass='root';          				//對應的密碼
	$dsn="$dbms:host=$host;dbname=$dbName";
	try {
    	$pdo = new PDO($dsn, $user, $pass); 	//初始化一個PDO對象
		$pdo->query("set names utf8");			//設置數據庫編碼格式
		$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
 		$nc=$_POST['nc'];
    	$pwd=md5($_POST['pwd']);
    	$email=$_POST['email'];
    	$address=$_POST['address'];
		$query="call pro_reg('$nc','$pwd','$email','$address')";//call調用存儲過程
		$result=$pdo->prepare($query);
		if($result->execute()){
			echo "數據添加成功!";
		}else{
			echo "數據添加失敗!";
		}
	} catch (PDOException $e) {
    	echo 'PDO Exception Caught.';
		echo 'Error with the database:<br/>';
		echo  'SQL Query: '.$query;
		echo '<pre>';
    	echo "Error: " . $e->getMessage(). "<br/>";    	
		echo "Code: " . $e->getCode(). "<br/>";
		echo "File: " . $e->getFile(). "<br/>";
		echo "Line: " . $e->getLine(). "<br/>";
		echo "Trace: " . $e->getTraceAsString(). "<br/>";
		echo '</pre>';

	}
 }

?>

<script language="javascript">
  function chkinput(form){
  
    if(form.nc.value==""){
	  alert("請輸入用戶暱稱!");
	  form.nc.select();
	  return(false);
	}
   if(form.pwd.value==""){
	  alert("請輸入註冊密碼!");
	  form.pwd.select();
	  return(false);
	}
	 if(form.email.value==""){
	  alert("請輸入E-mail地址!");
	  form.email.select();
	  return(false);
	}
	
	if(form.address.value==""){
	  alert("請輸入家庭地址!");
	  form.address.select();
	  return(false);
	}
   return(true);
  }

</script>
複製代碼
<?php 
	header("Content-Type:text/html;charset=utf-8");
	$dbms='mysql';
	$dbName='db_database';
	$user='root';
	$pwd='root';
	$host='localhost';
	$dsn="$dbms:host=$host;dbname=$dbName";
?>

	<form action="" method="post">
	<div>
	<span>PDO插入數據</span><br>
		用戶名:<input class="one" type="text" name="text" ><br>
		密&nbsp;&nbsp;碼:<input class="one"type="password" name="pwd"><br>
		<input class="two" type="submit" name="sub" value="肯定">
		<input class="two" type="reset" name="res" value="重置">
<?php
	if(isset($_POST[sub])){
		if($_POST[text]==""&&$_POST[pwd]==""){
			echo "文本框內容不能爲空";
		}else{
			try {
				$pdo=new PDO($dsn,$user,$pwd);
				$sql="insert into tb_pdo values('','$_POST[text]','$_POST[pwd]',now())";
				$result=$pdo->exec($sql);
				echo "插入數據成功,影響條數爲".$result;
			} catch (Exception $e) {
				echo "ERROR!!".$e->getMessage()."<br>";
			}		
		}
	}
?>
	</div>
	</form>	
複製代碼
<form action=''method="post">
<?php 
		}
		if(isset($_GET[id])){
			$sql1="select * from tb_pdo where id='$_GET[id]'";
			$resul=$pdo->query($sql1);
				foreach ($resul as $value){
					
				
?>
	<tr>
			<td class="one"><input readonly type='text' name='id' value='<?php echo $value[id];?>'></td>
			<td class="one"><input type='text' name='user' value='<?php echo $value[1];?>'></td>
			<td class="one"><input type='password' name='pwd' value='<?php echo $value[2];?>'></td>
			<td class="one"><input type='text' name='date' value='<?php echo $value[3];?>'></td>
			<td class="one"><input class="two" type='submit' name='sub1' value='肯定'></td>
	</tr>
	
<?php 
			}
		}
?>
	</form>
<?php 
		if($_POST[sub1]=="肯定"){
			$sql2="update tb_pdo set username='$_POST[user]',userpwd='$_POST[pwd]',date='$_POST[date]' where id='$_POST[id]'";
			$resu=$pdo->exec($sql2);
			if($resu==1){
				echo "<script>alert('更新數據成功');window.location.href='index.php'</script>";
			}	
		}	
	} catch (Exception $e) {
		echo "ERROR!!!".$e->getMessage()."<br>";
	}
?>
複製代碼

結言

好了,歡迎在留言區留言,與你們分享你的經驗和心得。

感謝你學習今天的內容,若是你以爲這篇文章對你有幫助的話,也歡迎把它分享給更多的朋友,感謝。

感謝!承蒙關照!您真誠的讚揚是我前進的最大動力!

image

image
相關文章
相關標籤/搜索