您好,登錄后才能下訂單哦!
如何用php從mysql數(shù)據(jù)庫(kù)中讀出查詢的數(shù)據(jù),相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
php從mysql數(shù)據(jù)庫(kù)中讀出查詢的數(shù)據(jù)的方法:1、通過(guò)mysqli_connect連接mysql數(shù)據(jù)庫(kù);2、設(shè)置字符集編碼格式;3、執(zhí)行SQL語(yǔ)句;4、處理結(jié)果集。
本文操作環(huán)境:windows7系統(tǒng)、PHP7.1版、DELL G3電腦
php怎么從mysql數(shù)據(jù)庫(kù)中讀出查詢的數(shù)據(jù)?
PHP+MySql實(shí)現(xiàn)后臺(tái)數(shù)據(jù)的讀?。?/strong>
我們使用的是PHP 的php_mysqli擴(kuò)展
首先了解一些基礎(chǔ)的用法
1.連接數(shù)據(jù)庫(kù)使用
mysqli_connect()
參數(shù):①主機(jī)地址 ②MYSQL用戶名 ③MYSQL密碼 ④選擇連接的數(shù)據(jù)庫(kù) ⑤ 端口號(hào)
返回:如果連接成功 返回資源類型的標(biāo)識(shí)符號(hào),如果失敗返回false
如果我們與Mysql建立的連接不止一條,那么以后操作數(shù)據(jù)庫(kù)的各種函數(shù)都必須傳入返回的連接符號(hào)
如果我們與mysql建立的連接只有一條,那么以后操作數(shù)據(jù)庫(kù)的各種函數(shù)就不必傳入這個(gè)標(biāo)識(shí)符號(hào)
2.設(shè)置字符集編碼格式
mysqli_set_charset() ;
3.執(zhí)行SQL語(yǔ)句
如果是增刪改 將返回布爾類型的是否成功
如果是查詢,將返回資源結(jié)果集
$res=mysqli_query();
4.處理結(jié)果集
mysqli_fetch_assoc($res); 返回關(guān)聯(lián)數(shù)組 mysqli_fetch_row($res); 返回索引數(shù)組 mysqli_fetch_object($res); 返回對(duì)象 mysqli_fetch_field($res); 返回結(jié)果集中每一列的字段信息(字段名,表名,數(shù)據(jù)庫(kù)名,字段類型) mysqli_data_seek($res, 0); 設(shè)置結(jié)果集指針位置,為零,結(jié)果集復(fù)位到最開(kāi)始 mysqli_free_result($res); 釋放查詢資源結(jié)果集 mysqli_close($conn); 關(guān)閉數(shù)據(jù)庫(kù)連接
下面我們來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單注冊(cè)登錄的功能。
先將通用的配置提到一個(gè)PHP文件中,后邊再用到引入即可
<?php header("Content-Type:text/html;charset=utf-8"); define("HOST", "127.0.0.1"); define("USERNAME", "root"); define("PASSWORD", ""); define("DBNAME", "mydb"); define("CHARSET", "utf8"); $con=mysqli_connect(HOST, USERNAME, PASSWORD, DBNAME) or die("數(shù)據(jù)庫(kù)連接失敗,<span style='color:red;'>".mysqli_connect_error()."</span>"); mysqli_set_charset($con, CHARSET) or die("字符集編碼設(shè)置無(wú)效");
在數(shù)據(jù)庫(kù)中建個(gè)表,以便存取用戶信息。在這我在mydb數(shù)據(jù)庫(kù)中創(chuàng)建了一個(gè)名為submit的表。
首先做的事注冊(cè)功能,注冊(cè)就是將用戶輸入表單中的信息保存到后臺(tái)數(shù)據(jù)庫(kù)的表中
下邊的是注冊(cè)頁(yè)的樣式,沒(méi)什么好說(shuō)的,記住name ID即可
<div class="panel panel-primary">
<div class="panel-heading">
<div class="panel-title">用戶注冊(cè)</div>
</div>
<div class="panel-body">
<form class="form-horizontal">
<div class="form-group">
<label>用戶名</label>
<input type="text" class="form-control" name="userName"/>
</div>
<div class="form-group">
<label>密碼</label>
<input type="password" class="form-control" name="pwd" />
</div>
<div class="form-group">
<label>確認(rèn)密碼</label>
<input type="password" class="form-control" name="rePwd" />
</div>
<div class="form-group">
<label>真實(shí)姓名</label>
<input type="text" class="form-control" name="realName" />
</div>
<div class="form-group btns">
<input type="button" class="btn btn-primary" value="確定注冊(cè)" id="submit"/>
<a type="button" class="btn btn-success" href="login.php"/>返回登錄</a>
</div>
</form>
</div>
</div>
重點(diǎn)是看看如何用JQuery將數(shù)據(jù)POST到后臺(tái)
<script src="../../js/jquery-1.10.2.js"></script>
<script type="text/javascript">
$(function(){
$("#submit").on("click",function(){ var userName = $("input[name='userName']").val(); var pwd = $("input[name='pwd']").val(); var rePwd = $("input[name='rePwd']").val(); var realName = $("input[name='realName']").val(); if(userName==""||pwd==""||rePwd==""||realName==""){
alert("所有信息不可為空,請(qǐng)確認(rèn)!"); return;
}else if(pwd!=rePwd){
alert("兩次密碼輸入不一致!"); return;
}
$.post("doReg.php",{ "userName":userName, "pwd":pwd, "realName":realName
},function(data){
alert(data);
if(data=="注冊(cè)成功"){
location = "login.php";
}
})
});
}); </script>
后臺(tái)的php文件接收數(shù)據(jù)后,將接收的數(shù)據(jù)通過(guò)SQL語(yǔ)句操作數(shù)據(jù)庫(kù)將數(shù)據(jù)存入表中
<?php header("Content-Type:text/html;charset=utf-8"); $str=$_POST["formData"]; list($username)=explode("&", $str); list(,$pwd)=explode("&", $str); list(,,,$realname)=explode("&", $str); list(,$username)=explode("=", $username); list(,$pwd)=explode("=", $pwd); list(,$realname)=explode("=", $realname); include_once("mysql.php"); $sql=<<<sql
insert into submit (username,pwd,realname) values ("$username","$pwd","$realname");
sql; $sql2=<<<sql2
SELECT username FROM submit WHERE username="$username";
sql2; $res2=mysqli_query($con, $sql2); $res=mysqli_query($con, $sql); if(mysqli_num_rows($res2)>0){ die("用戶名已經(jīng)存在!");
} elseif($res){ echo 'true';
}else{ die();
}
這樣,點(diǎn)擊注冊(cè)按鈕,就可將輸入的信息存入表中。成功后跳轉(zhuǎn)登陸頁(yè)
下面做的就是登陸頁(yè),登錄功能需要讀取存在表中的用戶名與密碼信息
登錄頁(yè)樣式也不多說(shuō)。同樣記住需要的name與ID
<div class="panel panel-primary"> <div class="panel-heading"> <div class="panel-title">用戶登錄</div> </div> <div class="panel-body"> <form class="form-horizontal"> <div class="form-group"> <label>用戶名</label> <input type="text" class="form-control" name="userName"/> </div> <div class="form-group"> <label>密碼</label> <input type="password" class="form-control" name="pwd"/> </div> <div class="form-group btns"> <input type="button" class="btn btn-primary" value="登錄系統(tǒng)" id="submit"/> <a type="button" class="btn btn-success" href="reg.php"/>注冊(cè)賬號(hào)</a> </div> </form> </div> </div>
重點(diǎn)還是JQ代碼
<script src="../../js/jquery-1.10.2.js"></script>
<script type="text/javascript">
$(function(){
$("#submit").on("click",function(){ var userName = $("input[name='userName']").val(); var pwd = $("input[name='pwd']").val();
$.post("doLogin.php",{ "userName":userName, "pwd":pwd
},function(data){
alert(data); if(data=="登錄成功"){
location = "index.php";
}else{
alert("用戶名或密碼有誤!");
}
});
});
}); </script>
上述登陸頁(yè)的JQ代碼所做的是,取到后臺(tái)登陸PHP文件從數(shù)據(jù)庫(kù)中讀取的用戶名與密碼信息和用戶輸入的新相比較,true則登陸成功
那么后臺(tái)登陸頁(yè)怎么寫(xiě)的呢,很簡(jiǎn)單,通過(guò)SQL語(yǔ)句從表中讀取到信息后,返回給前臺(tái)登錄頁(yè)面即可
<?php
header("Content-Type:text/html;charset=utf-8");include_once("../mysql/mysql.php");
$userName = $_POST["userName"]; $pwd = $_POST["pwd"];
$loginSql = <<<login
select * from submit where username="{$userName}" and pwd = "{$pwd}";
login; $res = mysqli_query($con, $loginSql);
if($row = mysqli_fetch_row($res)){ $_SESSION["user"] = $row; echo "登錄成功";
}else{ echo "登錄失敗";
}
mysqli_free_result($res); mysqli_close($con);
登陸成功后,提示登錄成功,跳轉(zhuǎn)到首頁(yè)(index.html)
看完上述內(nèi)容,你們掌握如何用php從mysql數(shù)據(jù)庫(kù)中讀出查詢的數(shù)據(jù)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。