一個人的價值,在于他貢獻了什么,而不在于他獲得了什么。
-------------愛因斯坦
首先我們在上一篇文章了解了數據庫,而Php當然要與數據庫結合起來才能發揮后端的效果。那么Php鏈接數據庫的流程是什么?
答案如下:
1.連接MySql服務器
2.選擇MySql數據庫
3.執行Sql語句
4.關閉結果集
5.關閉MySql服務器
流程和JDBC是一樣的,語言都是相通的。
由于我參考的數據使用了一些廢棄的方法,所以我在這里直接拿我寫的新版本來演示今天的實例。
在演示之前,我們需要做一些準備工作。
準備
1.Pc機(Windows10 64位,Chrome瀏覽器【運行軟件】,PhpStorm IDE【編寫代碼軟件】 ,xampp【LAMP環境】 ,Winscp【ssh管理器,只要能使用ssh的就行,不必要非是這個】)
- ubuntu16.04 騰訊云服務器 (如果你打算在本地測試,就不需要準備服務器了。)
安裝與配置
剛才提了幾種軟件大家都一一裝好啟動,今天的重點不是教大家裝軟件來著。
1.關閉lls服務
首先在瀏覽器訪問一下localhost這個地址,如果不是微軟的頁面就不必操作這個步驟,如果是微軟的頁面就需要關閉World Wide Web服務,Windows關閉服務的步驟也很簡單
右擊狀態欄選擇任務管理器,查看詳細信息,然后選擇服務選項卡,找到World Wide Web服務(找不到的話,就打開全部),右擊屬性,選擇禁用,然后應用就Ok
此時再訪問localhost,應該是請求不到的頁面
2.打開Apache服務
安裝xampp后,我們會得到一個xampp_start.exe的執行程序,點擊運行之后,就是一個終端界面,把他放在后臺運行就行。
此時我們的Web服務器已經啟動,再次訪問localhost
這時我們的地址會變成http://localhost/dashboard/
這其實是我們的服務器地址在C:\xampp\htdocs\dashboard(C:\xampps是你的xampp安裝目錄,htdocs這個文件夾會在xampp安裝目錄下找到,如果沒有,請卸載重裝,盡量裝在c盤)
得到這樣的頁面,說明我們已經成功的啟動了服務器。
可以看到這個頁面右上角還有phpmyadmin的入口,點擊他,進入我們的本地數據庫
3.創建所需數據庫
這里我們在上一篇文章都已經說過怎么創建數據庫和表,添加數據了。
我這里直接創建了一個名叫surine的數據庫,建立了users表,并且添加了幾個數據里頭,當然你可以不添加(這是我運行的時候,注冊的用戶數據)
新建項目
打開我們的PhpStorm,我直接在dashboard文件夾下新建了一個php文件夾,將項目建立在php中
我們新建兩個php文件,一個叫register.php 另一個叫Login.php
下面我將詳細介紹一下這兩個文件的內容
register.php[用戶注冊]
<!--CSS代碼,主要控制界面樣式,沒啥好說的-->
<style type="text/css">
form{
width:300px;
background-color: #49eebe;
margin-left:300px;
margin-top:30px;
padding:30px;
}
button{
margin-top:20px;
}
</style>
<!--Html代碼,主要設計了幾個表單,采用post方法-->
<form method="post">
<label>username:<input type="text" name="name"></label>
<br/><br/>
<label>password:<input type="password" name="pw"></label>
<br/><br/>
<label>confirm:<input type="password" name="repw"></label>
<button type="submit" name="submit">register</button>
</form>
<!--Php代碼-->
<?php
//第一步:使用mysqli_connect連接數據庫
//這個方法接受4個參數,第一個是主機名,填寫localhost,
//第二個和第三個是用戶名和密碼(mysql安裝時你都記得的,
//用戶是root,密碼是root的),第四個是我們的數據庫,這里填
//我剛才建立了surine數據庫
//這個方法返回一個boolean值
$link = mysqli_connect('localhost', 'root', '', 'surine');
//通過返回的值來判斷是否鏈接成功數據庫
if (!$link) {
//數據庫鏈接失敗,還打印了mysql返回的日志
die('數據庫連接失敗 ' . mysql_error());
}else {
//使用isset(判斷變量已經配置)函數來判斷submit是否完成提交
if (isset($_POST['submit'])){
//如果完成提交,開始判斷提交的密碼和確認的密碼是否一致
if ($_POST['pw'] == $_POST['repw']){
//如果一致,說明這個用戶可以注冊
//向users表中添加值
$query = "insert into users (user,pswd) values('{$_POST['name']}','{$_POST['pw']}')";
//執行數據庫操作,嚴格按照這篇文章一開始的流程來走
$result = mysqli_query($link, $query);
//如果插入成功,則返回true
if($query){
//跳轉到登陸頁面
header("Location:Login.php");
}else{
echo "注冊失敗";
}
}else {
//js彈窗提醒
echo "<script>alert('兩次輸入密碼不一致!')</script>";
}
}
}
//關閉數據庫,防止浪費資源
mysqli_close($link);
?>
可以看到,我在上面寫了很多的注釋,這個流程就是按照開篇的流程走的,比較容易理解,如果不懂的話,可以留言。
Login.php[用戶登陸]
<!--還是CSS代碼,主要控制界面樣式,沒啥好說的-->
<style type="text/css">
form{
width:300px;
background-color:#EEE0E5;
margin-left:300px;
margin-top:30px;
padding:30px;
}
</style>
<!--還是Html代碼,主要設計了幾個表單,采用post方法-->
<form method="post">
<label>username:<input type="text" name="name"></label>
<br/><br/>
<label>password:<input type="password" name="pw"></label>
<br/><br/>
<button type="submit" name="submit">login</button>
</form>
<!--php代碼-->
<?php
//鏈接數據庫,參數含義在上面已經提到過
$link = mysqli_connect('localhost', 'root', '', 'surine');
if (!$link){
echo"<script>alert('數據庫連接失敗!')</script>";
}else {
//如果點擊登陸按鈕
if (isset($_POST['submit'])){
//從數據庫查詢是否有注冊,這個語句和上面的添加語句一樣,相對固定,使用where子句在users表查詢,user = ??? pswd = ???的用戶,還是很容易理解
$query = "select * from users where user = '{$_POST['name']}' and pswd = '{$_POST['pw']}'";
//傳入查詢參數,鏈接參數
$result = mysqli_query($link, $query);
//如果有這么一列數據匹配,那么就登陸成功
//這個mysqli_num_rows是什么意思呢,他是返回查詢結果集
//中行的數量,也就是說,如果我們沒有這個用戶注冊,肯定是沒
//有一行匹配的,也就是返回0,假如說我們有一個注冊了,肯定返
//回1,假如說我們有兩個注冊信息一樣,那么就返回2,在實際 生
//產中肯定是不允許兩個賬號密碼一樣的,那時候只要加判斷就可
//以了,所以我們現在判斷這個返回值等于1,就說明有這個用戶
if (mysqli_num_rows($result) == 1){
echo "登陸成功!";
}else{
echo "登陸失敗";
}
}
}
?>
好了,很簡單的兩個文件,我們可以在我們本地服務器運行測試一下。
瀏覽器訪問這個地址
http://localhost/dashboard/php/register.php
輸入信息點擊按鈕(這里我輸入用戶名是root,密碼是1)
點擊按鈕之后顯示
然后我們去我們的數據庫查看一下
這時候,已經看到我們數據的值了,你可以操作一下數據庫不存在的值,會出現登陸失敗的提示
發送至服務器
我們剛才僅僅是在本地測試,所以我們打算發送到服務器試試效果,不過按照你的服務器情況,改部分參數,比如說我服務器的mysql密碼,服務器的數據庫名稱,表名稱,等等。
我們使用Winscp軟件把文件傳送到服務器的apache目錄,然后瀏覽器輸入訪問鏈接,比如我的鏈接是下面的
http://surine.cn/php/rigister.php
然后就可以達成和本地測試一樣的效果。
總結
這篇文章,我們主要設計了一個小實例來認識使用php與mysql數據庫鏈接的相關函數
在下面的文章中,我們將豐富一下這個功能,實現Android與Php交互。