十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂(yōu)售后,網(wǎng)站問(wèn)題一站解決
phpstudy數(shù)據(jù)庫(kù)創(chuàng)建步驟:

成都創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供湖濱網(wǎng)站建設(shè)、湖濱做網(wǎng)站、湖濱網(wǎng)站設(shè)計(jì)、湖濱網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、湖濱企業(yè)網(wǎng)站模板建站服務(wù),十年湖濱做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
1、點(diǎn)擊打開(kāi)phpstudy軟件,然后點(diǎn)擊mySQL管理器;
2、進(jìn)入到PHPmyadmin登陸界面,默認(rèn)賬號(hào)和密碼都是root;
3、登陸進(jìn)去后,如圖所示樣式;
4、然后,點(diǎn)擊數(shù)據(jù)庫(kù),輸入想要的數(shù)據(jù)名稱(chēng),如:new,這個(gè)隨便?。?/p>
5、點(diǎn)擊創(chuàng)建后,成功后,如圖所示;
創(chuàng)建conn.php,連接數(shù)據(jù)庫(kù)。
$dns = 'mysql:host=127.0.0.1;dbname=test';
$username = 'root';
$password = 'root';
// 1.連接數(shù)據(jù)庫(kù),創(chuàng)建PDO對(duì)象
$pdo = new PDO($dns,$username,$password);
創(chuàng)建login.html,登陸頁(yè)面。
用戶(hù)名
密 碼
創(chuàng)建login.php,驗(yàn)證賬號(hào)密碼。
header("Content-Type: text/html; charset=utf8");
if(!isset($_POST["submit"])){
exit("錯(cuò)誤執(zhí)行");
}//檢測(cè)是否有submit操作
include('conn.php');//鏈接數(shù)據(jù)庫(kù)
$name = $_POST['name'];//post獲得用戶(hù)名表單值
$pwd = sha1($_POST['password']);//post獲得用戶(hù)密碼單值
if ($name $pwd){//如果用戶(hù)名和密碼都不為空
$sql = "select * from user where username = '$name' and password='$pwd'";//檢測(cè)數(shù)據(jù)庫(kù)是否有對(duì)應(yīng)的username和password的sql
$stmt = $pdo-prepare($sql);
$stmt-execute();
if($stmt-fetch(PDO::FETCH_BOUND)){//0 false 1 true
header("refresh:0;url=welcome.html");//如果成功跳轉(zhuǎn)至welcome.html頁(yè)面
exit;
}else{
echo "用戶(hù)名或密碼錯(cuò)誤";
echo "
setTimeout(function(){window.location.href='login.html';},1000);
";//如果錯(cuò)誤使用js 1秒后跳轉(zhuǎn)到登錄頁(yè)面重試;
}
}else{//如果用戶(hù)名或密碼有空
echo "表單填寫(xiě)不完整";
echo "
setTimeout(function(){window.location.href='login.html';},1000);
";
//如果錯(cuò)誤使用js 1秒后跳轉(zhuǎn)到登錄頁(yè)面重試;
}
$pdo = null;
創(chuàng)建signup.html,注冊(cè)頁(yè)面
用戶(hù)名:
密 碼:
創(chuàng)建signup.php
header("Content-Type: text/html; charset=utf8");
if(!isset($_POST['submit'])){
exit("錯(cuò)誤執(zhí)行");
}//判斷是否有submit操作
$name=$_POST['name'];//post獲取表單里的name
$pwd = sha1($_POST['password']);//post獲取表單里的password
include('conn.php');//鏈接數(shù)據(jù)庫(kù)
$sql="insert into user(id,username,password) values (null,'$name','$pwd')";//向數(shù)據(jù)庫(kù)插入表單傳來(lái)的值的sql
$stmt = $pdo-prepare($sql);
$stmt-execute();
$stmt-fetch(PDO::FETCH_BOUND);
if (!$stmt){
die('Error: ' . $stmt-getMessage());//如果sql執(zhí)行失敗輸出錯(cuò)誤
}else{
echo "注冊(cè)成功";//成功輸出注冊(cè)成功
}
$pdo = null;//關(guān)閉數(shù)據(jù)庫(kù)
寫(xiě)一個(gè)專(zhuān)門(mén)用于連接數(shù)據(jù)庫(kù)的文件:db_conn.php 如下:
?php
define("DBSERVER","localhost");
define("USER","root");
define("PASSWORD","your password");
define("DB","dbName");
function connectMySQL()
{
@mysql_pconnect(DBSERVER,USER,PASSWORD) or die("服務(wù)器繁忙,請(qǐng)刷新后再?lài)L試建立連接");
@mysql_select_db(DB) or die("數(shù)據(jù)庫(kù)正在連接中。。。");
}
connectMySQL();
mysql_query("set names utf8");
?
然后在需要使用到連接數(shù)據(jù)庫(kù)的網(wǎng)頁(yè)加入:
require("db_conn.php");
希望能幫到你。
方法/步驟
phpMyAdmin是一款web數(shù)據(jù)庫(kù)管理軟件,這款軟件是數(shù)據(jù)庫(kù)管理軟件web軟件中非常實(shí)用的。
請(qǐng)點(diǎn)擊輸入圖片描述
先進(jìn)入到網(wǎng)站管理的面板,在面板里找到?phpMyAdmin 4.0 點(diǎn)擊對(duì)應(yīng)的小方框,如下圖
請(qǐng)點(diǎn)擊輸入圖片描述
點(diǎn)擊旁邊小方框后會(huì)新開(kāi)一個(gè)頁(yè)面,可能在訪(fǎng)問(wèn)這個(gè)頁(yè)面的時(shí)候會(huì)讓輸入用戶(hù)名、密碼的口令,將口令輸入進(jìn)去
請(qǐng)點(diǎn)擊輸入圖片描述
登錄成功后就進(jìn)入了phpMyAdmin 的主控制面板了,面板顯示了導(dǎo)入、導(dǎo)出、狀態(tài)、用戶(hù)等功能。還有就是數(shù)據(jù)庫(kù)服務(wù)器的一些軟件參數(shù),如協(xié)議版本等信息。
請(qǐng)點(diǎn)擊輸入圖片描述
在面板的左側(cè),列出了所有的數(shù)據(jù)庫(kù),點(diǎn)擊數(shù)據(jù)庫(kù)名稱(chēng)前面的+號(hào)可以展開(kāi)數(shù)據(jù)庫(kù)查看數(shù)據(jù)庫(kù)中所有的數(shù)據(jù)表
請(qǐng)點(diǎn)擊輸入圖片描述
點(diǎn)擊數(shù)據(jù)表名,會(huì)打開(kāi)點(diǎn)擊數(shù)據(jù)表,會(huì)顯示點(diǎn)擊數(shù)據(jù)表的數(shù)據(jù),前30條數(shù)據(jù)。因?yàn)槭莣eb的管理軟件所以在處理大量數(shù)據(jù)的查詢(xún)或者其他操作時(shí)會(huì)顯得特別的消耗時(shí)間,但是使用web管理數(shù)據(jù)庫(kù)不都是臨時(shí)的情況下使用么。
請(qǐng)點(diǎn)擊輸入圖片描述
常規(guī)方式
常規(guī)方式就是按部就班的讀取文件了。其余的話(huà)和上述方案一致。
// 讀取配置文件內(nèi)容
$handle = fopen("filepath", "r"); ? ? ? ? ? ?$content = fread($handle, filesize("filepath"));123
PHP解析XML
上述兩種讀取文件,其實(shí)都是為了PHP解析XML來(lái)做準(zhǔn)備的。關(guān)于PHP解析XML的方式的博客有很多。方式也有很多,像simplexml,XMLReader,DOM啦等等。但是對(duì)于比較小型的xml配置文件,simplexml就足夠了。
配置文件
?xml version="1.0" encoding="UTF-8" ?mysql
!-- 為防止出現(xiàn)意外,請(qǐng)按照此標(biāo)準(zhǔn)順序書(shū)寫(xiě).其實(shí)也無(wú)所謂了 --
hostlocalhost/host
userroot/user
password123456/password
dbtest/db
port3306/port/mysql12345678910
解析
?php/**
* 作為解析XML配置文件必備工具
*/class XMLUtil {
public static $dbconfigpath = "./db.config.xml"; ? ?public static function getDBConfiguration() {
$dbconfig = array (); ? ? ? ?try { ? ? ? ? ? ?// 讀取配置文件內(nèi)容
$handle = fopen(self::$dbconfigpath, "r"); ? ? ? ? ? ?$content = fread($handle, filesize(self::$dbconfigpath)); ? ? ? ? ? ?// 獲取xml文檔根節(jié)點(diǎn),進(jìn)而獲取相關(guān)的數(shù)據(jù)庫(kù)信息
$mysql = simplexml_load_string($content); ? ? ? ? ? ?// 將獲取到的xml節(jié)點(diǎn)信息賦值給關(guān)聯(lián)數(shù)組,方便接下來(lái)的方法調(diào)用
$dbconfig['host'] = $mysql-host; ? ? ? ? ? ?$dbconfig['user'] = $mysql-user; ? ? ? ? ? ?$dbconfig['password'] = $mysql-password; ? ? ? ? ? ?$dbconfig['db'] = $mysql-db; ? ? ? ? ? ?$dbconfig['port'] = $mysql-port; ? ? ? ? ? ?// 將配置信息以關(guān)聯(lián)數(shù)組的形式返回
return $dbconfig;
} catch ( Exception $e ) { ? ? ? ? ? ?throw new RuntimeException ( "mark讀取數(shù)據(jù)庫(kù)配置文件信息出錯(cuò)!/markbr /" );
} ? ? ? ?return $dbconfig;
}
}1234567891011121314151617181920212223242526272829
數(shù)據(jù)庫(kù)連接池
對(duì)于PHP程序而言,優(yōu)化永無(wú)止境。而數(shù)據(jù)庫(kù)連接池就在一定程度上起到了優(yōu)化的作用。其使得對(duì)用戶(hù)的每一個(gè)請(qǐng)求而言,無(wú)需每次都像數(shù)據(jù)庫(kù)申請(qǐng)鏈接資源。而是通過(guò)已存在的數(shù)據(jù)庫(kù)連接池中的鏈接來(lái)返回,從時(shí)間上,效率上,都是一個(gè)大大的提升。
于是,這里簡(jiǎn)單的模擬了一下數(shù)據(jù)庫(kù)連接池的實(shí)現(xiàn)。核心在于維護(hù)一個(gè)“池”。
從池子中取,用畢,歸還給池子。
?php/**x
* ?PHP中的數(shù)據(jù)庫(kù) 工具類(lèi)設(shè)計(jì)
* ?郭璞
* ?2016年12月23日
*
**/class DbHelper { ? ?private $dbconfig; ? ?private $dbpool; ? ?public $poolsize; ? ?public function __construct($poolsize = 20) { ? ? ? ?if (! file_exists ( "./utils.php" )) { ? ? ? ? ? ?throw new RuntimeException ( "markutils.php文件丟失,無(wú)法進(jìn)行配置文件的初始化操作!/markbr /" );
}else {
require './utils.php';
} ? ? ? ?// 初始化 配置文件信息
$this-dbconfig = XMLUtil::getDBConfiguration (); ? ? ? ?// 準(zhǔn)備好數(shù)據(jù)庫(kù)連接池“偽隊(duì)列”
$this-poolsize = $poolsize;
$this-dbpool = array (); ? ? ? ?for($index = 1; $index = $this-poolsize; $index ++) {
$conn = mysqli_connect ( $this-dbconfig ['host'], $this-dbconfig ['user'], $this-dbconfig ['password'], $this-dbconfig ['db'] ) or die ( "mark連接數(shù)據(jù)庫(kù)失敗!/markbr /" );
array_push ( $this-dbpool, $conn );
}
} ? ?/**
* 從數(shù)據(jù)庫(kù)連接池中獲取一個(gè)數(shù)據(jù)庫(kù)鏈接資源
*
* @throws ErrorException
* @return mixed
*/
public function getConn() { ? ? ? ?if (count ( $this-dbpool ) = 0) { ? ? ? ? ? ?throw new ErrorException ( "mark數(shù)據(jù)庫(kù)連接池中已無(wú)鏈接資源,請(qǐng)稍后重試!/mark" );
} else { ? ? ? ? ? ?return array_pop ( $this-dbpool );
}
} ? ?/**
* 將用完的數(shù)據(jù)庫(kù)鏈接資源放回到數(shù)據(jù)庫(kù)連接池
*
* @param unknown $conn
* @throws ErrorException
*/
public function release($conn) { ? ? ? ?if (count ( $this-dbpool ) = $this-poolsize) { ? ? ? ? ? ?throw new ErrorException ( "mark數(shù)據(jù)庫(kù)連接池已滿(mǎn)/markbr /" );
} else {
array_push ( $this-dbpool, $conn );
}
}
}
方法/:
1、數(shù)據(jù)庫(kù)連接第一步:配置mysql_connect()的參數(shù),參數(shù)依次為:主機(jī)地址,用戶(hù)名,用戶(hù)密碼;
2、mysql_pconnect()與mysql_connect()是不一樣的,pconnect顧名思義是持久連接;
3、服務(wù)器連接成功后,需要選擇需要用的數(shù)據(jù)庫(kù);
4、使用mydql_close()可以關(guān)閉數(shù)據(jù)庫(kù)連接資源,避免長(zhǎng)時(shí)間占用啟用資源消耗;
5、mysqli_connect( )是mysql連接的另一種方式,參數(shù)形式一樣;
6、首次使用mysql連接數(shù)據(jù)庫(kù)時(shí),要記得使用輸入邏輯判斷,服務(wù)器連接不成功或者選擇數(shù)據(jù)庫(kù)不成功,都要用Mysql_error或者mysql_errno來(lái)報(bào)錯(cuò);
7、mysql的報(bào)錯(cuò),能夠幫助準(zhǔn)確地定位到錯(cuò)誤發(fā)生在哪里。