2017年8月13日 星期日

PHP與MySQL登入範例

此範例是以HTML的網頁做為登入頁面,並透過PHP程式連接MySQL資料庫,然後再以PHP網頁做為輸出頁面
範例的網址:http://tomchen263.000webhostapp.com/LoginExample_Web/login.html




資料庫格式與資料表:

2張資料表,books與employee
 books內容
 employee內容






conn_mysql.php:

<?php
	$db_link=@mysqli_connect("資料庫位置","資料庫帳號","資料庫密碼");
	if(!$db_link){
		die("資料庫連線失敗<br>");
	}else{
		echo"資料庫連線成功<br>";
	}
	mysqli_query($db_link,"SET NAMES 'utf-8'");  //設定字元集與編碼為utf-8
	$seldb=@mysqli_select_db($db_link,"資料庫名稱");
	if(!$seldb){
		die("資料庫選擇失敗<br>");
	}else{
		echo"資料庫選擇成功<br>";
	}
?>

login.html:

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

	</head>
	<body>
		<form method="POST" action="login_php.php">
			請輸入帳號:<input type="text" name="username"/><br>
			請輸入密碼:<input type="Password" name="password"/><br>
			<input type="submit" value="登入"/>
		</form>
	</body>
</html>

login_php.php:

<?php
	header('Content-Type: text/html; charset=utf-8');
	$username=$_POST['username'];
	$password=$_POST['password'];
	
	require("conn_mysql.php");
	$sql_query_login="SELECT * FROM employee where username='$username' AND password='$password'";
	$result1=mysqli_query($db_link,$sql_query_login) or die("查詢失敗");
	if(mysqli_num_rows($result1)){
		$sql_query="SELECT * FROM books";
		$result=mysqli_query($db_link,$sql_query);
		echo "<table border=1 width=400 cellpadding=5>";
		echo "<tr>
			<td>書籍編號</td>
			<td>書籍名稱</td>
			<td>負責員工編號</td>
			<td>價錢</td>
		      </tr>";
		while($row=mysqli_fetch_array($result)){
			
			echo "<tr>
				<td>$row[0]</td> 
				<td>$row[1]</td>
				<td>$row[2]</td>
				<td>$row[3]</td>
			      </tr>";
		
			
		}
		echo"</table>";
	}else{
		echo"登入失敗";
	}
	
	
?>

2017年8月12日 星期六

MySQL:語法


範例

資料庫名稱:test
資料表:1.books  2. employee

books結構











employee結構










books資料













employee資料













指令:

基本指令

select:SELECT指令查詢資料表時,可以指明查詢結果所需的欄位清單
select 欄位名稱 from 資料表名稱 where 條件;

distinct:在SELECT指令後可以使用DISTINCT指令分辨重複的欄位值,一旦欄位擁有重複值,就只會顯示其中一筆記錄。
SELECT DISTINCT 價錢 FROM books;

insert:在資料表插入一筆新記錄
insert into 資料表名稱 values ('值','值');

update:更新資料表的記錄,這些記錄是已經 存在的記錄
update 資料表名稱 set 欄位名稱 = '值' where 條件;

delete:刪除資料表的記錄
delete from 資料表名稱 where 條件;

as:指定中文或英文的欄位別名
SELECT 書籍名稱,價錢,價錢*0.9 AS 打折後 FROM books;

limit:可以限制傳回的資料筆數
SELECT * FROM books LIMIT 0,3;(回傳第0筆到第三筆資料)

WHERE子句 

  • 比較運算子:WHERE子句的條件可以是一個運算式,運算元是欄位 值,可以是文字、數值或日期/時間,在運算式可以使用的比較運算子, 如下表所示:

  • 邏輯運算子:WHERE子句的條件運算式可以使用邏輯運算子執行多樣化比較,或連接多 條件建立複雜的邏輯運算式,如下表所示:


is null 、 is not null:查詢資料表中指定欄位值是否為空值NULL
SELECT 書籍名稱 FROM books WHERE 書籍名稱 is NOT NULL;










and、or、not
SELECT * FROM books WHERE 價錢>=550 AND 價錢<=650;








between:在一個範圍之內
SELECT * FROM books WHERE 價錢 BETWEEN 550 AND 650;








like:%代表任何長度的任何字串;_代表一個字元長度的任何字元
SELECT * FROM books WHERE 書籍名稱 LIKE '_ava%';








In:屬於清單其中之一
SELECT * FROM books WHERE 負責員工編號 IN (1,2);









order by:指定依照欄位由小到大或由大到小進行排序。
SELECT * FROM books ORDER BY 價錢 DESC;














  • 算術運算子:WHERE子句的運算式條件可以使用算術運算子,算術運算子可以使用 SELECT指令的欄位清單,用來計算2個欄位的和, 使用各欄位組成一個算術運算式或是加上一個固 定值。



SELECT 書籍名稱,價錢,價錢*0.9 AS 打折後 FROM books;








聚合函數

  • COUNT()函數 
  • AVG()函數 
  • MAX()函數 
  • MIN()函數 
  • SUM()函數













count:計算筆數
SELECT COUNT(書籍名稱) AS 數量 FROM books;






合併查詢與子查詢

子查詢
SELECT * FROM books WHERE 負責員工編號 = (SELECT 員工編號 FROM employee WHERE 姓名 = '謝小小');









Join On:使用在多個資料表的查詢
SELECT 負責員工編號,書籍名稱,姓名 FROM employee JOIN books ON 負責員工編號 = 員工編號;










Group By :群組是以指定欄位進行分類,將欄位值中重複的值結合起
SELECT 負責員工編號,COUNT(價錢) AS 員工負責幾項 FROM books GROUP BY 負責員工編號;








Join on + Group by
SELECT 負責員工編號,COUNT(價錢),姓名 FROM books JOIN employee ON 負責員工編號 = 員工編號 GROUP BY 負責員工編號;