我也不是老手,,呵
創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站制作、成都網(wǎng)站建設(shè)與策劃設(shè)計,鐘樓網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:鐘樓等地區(qū)。鐘樓做網(wǎng)站價格咨詢:13518219792
首先,,數(shù)據(jù)庫配置信息,,dbhost,dbport,dbuser,dbpass,dbname,charset這些參數(shù)最好不要設(shè)成全局變量,而從構(gòu)造函數(shù)傳遞...
這樣做的好處有幾點
這個類可以單獨調(diào)用,,?不用再包含配置文件,,因為你調(diào)用類的php文件一定會先包含配置文件,,再包含數(shù)據(jù)庫操作類,,
通過參數(shù)傳遞可以提高類的獨立性,,這樣,,以后這個類可以被移植到任何系統(tǒng)里面調(diào)用,,,
1、取得結(jié)果集中字段的數(shù)目
這個是由你select?后面的東西來決定的,,如果你用的是select?*
你已經(jīng)寫了這個
$result=mysql_query($str."?limit?".$rows)or?die(mysql_error());
$count=0;
$data=array();
while($rs=mysql_fetch_row($result)){
$data[$count]=$rs;
$count++;
}
@mysql_free_result($result);
return?$result;
你可以在這段代碼@mysql_free_result($result);之前,,用count($data[0])函數(shù)來提取,,,你這里的return?$result是什么意思,,不是已經(jīng)釋放了嗎,,應(yīng)該是return?$data才對
$result=mysql_query($str."?limit?".$rows)or?die(mysql_error());
這一句你是限制提取條數(shù),,,但這在實際工作中沒有什么用處,,,
一般的分頁語句都是寫在sql里面的limit?x,xx;這樣
你這樣寫,,如果有1W條記錄,,你就沒辦法從數(shù)據(jù)庫的角度去分類
第二個也是一樣的
因為你的SelectRows($str,$rows)返回的是一個二維數(shù)組,,所以要知道有多少條記錄,,,只要用count($data)就可以知道..
$db=new?mysqlconn();
$str="SELECT?*?FROM?xxx?ORDER?BY?XXX?ASC";
$data=$db-SelectRows($str,$rows);
$counts=count($data);//這就是取得的總記錄數(shù)
phpstudy數(shù)據(jù)庫創(chuàng)建步驟:
1、點擊打開phpstudy軟件,然后點擊mySQL管理器;
2、進入到PHPmyadmin登陸界面,默認(rèn)賬號和密碼都是root;
3、登陸進去后,如圖所示樣式;
4、然后,點擊數(shù)據(jù)庫,輸入想要的數(shù)據(jù)名稱,如:new,這個隨便?。?/p>
5、點擊創(chuàng)建后,成功后,如圖所示;
PHP使用面向?qū)ο蟮木幊谭绞絹砭帉憯?shù)據(jù)庫操作類
步驟1:創(chuàng)建一個PHP的頁面“config.php”定義數(shù)據(jù)庫相關(guān)的參數(shù)
?php // config.php
define(?DB_USER?, "username");
define(?DB_PASSWORD?, "password");
define(?DB_DATABASE?, "database name");
define(?DB_SERVER?, "ip address of database server");
?
第2步:創(chuàng)建一個PHP的類,用于連接數(shù)據(jù)庫,命名為“db_connect.php”
?php // db_connnect.php
class DB_Connect {
private $con;
// constructor
function __construct() {
// connecting to database
$this-con = $this-connect();
}
//Function to connect with database
private function connect() {
// import database connection variables
require_once __DIR__.?/config.php?;
try {
$conn = new PDO(?mysql:host=?.DB_SERVER .?;
dbname=?.DB_DATABASE, DB_USER, DB_PASSWORD);
$conn-setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo ?ERROR: ? . $e-getMessage();
}
return $conn;
}
public function getDbConnection(){
return $this-con;
}
}
?
第3步:創(chuàng)建一個類,它包含了所有的功能,為您實現(xiàn)SQL查詢,命名為“db_functions.php”
調(diào)用里面的函數(shù)進行SQL查詢、以促進可重用性和可維護性
?php // db_functions.php
class DB_Functions {
private $con;
// constructor
function __construct() {
require_once __DIR__.?/db_connect.php?;
// connecting to database
$db = new DB_Connect();
$this-con = $db-getDbConnection();
}
public function selectUser($id) {
try {
$stmt = $this-con-prepare(?SQL語句?);
$params = array(?:id? = $id);
$stmt-execute($params);
return $stmt;
} catch(PDOException $e) {
echo ?ERROR: ? . $e-getMessage();
}
}
public function otherSQLfunction($parameter) {
// other sql code
}
}
第4步:最后,在你其他的PHP文件里面只需要簡單地調(diào)用“db_functions.php”的方法
?php
require_once __DIR__.?/db_functions.php?;
$db = new DB_Functions();
$result = $db-selectUser($id);
// other code
?
if($database=="")
{
$query="use members";
if(mysql_query($query)==null)
{
$query="create database members";
if(mysql_query($query)==1)
{
//創(chuàng)建數(shù)據(jù)庫成功,開始連接數(shù)據(jù)庫
$database="members";
$conn=mysql_connect($server,$username,$password)
or die("could not connect mysql");//你連接數(shù)據(jù)庫的這個代碼應(yīng)該放在if外面,這樣才能連接要不然你自己看看吧,在你執(zhí)行語句的時候,你都還沒有走到mysql_connect這里,所以就沒有連接啊
mysql_select_db($database,$conn)
or die("could not open database");
}
else
{
echo "Error while creating database (Error".mysql_errno().":\"".mysql_error()."\")br";//創(chuàng)建數(shù)據(jù)庫出錯
}
}
CREATE TABLE可以指定引擎,例如:
CREATE TABLE IF NOT EXISTS `tab` (
`id` int(11) default NULL,
`pid` int(11) default NULL,
`idpath` char(16) default NULL,
`title` char(16) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `tab` (
`id` int(11) default NULL,
`pid` int(11) default NULL,
`idpath` char(16) default NULL,
`title` char(16) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
在一個服務(wù)器上一般來講都不止一個站點,更不止一個MySQL(和PHP搭配之最佳組合)數(shù)據(jù)庫。
為了防止安全隱患,我們一般針對每個數(shù)據(jù)庫都設(shè)置了獨立的數(shù)據(jù)庫訪問帳號,該帳號僅有訪問該數(shù)據(jù)庫的權(quán)限。下面就讓我們來具體演示一下:
1、首先我們要登陸php(做為現(xiàn)在的主流開發(fā)語言)MyAdmin,不做演示。
2、創(chuàng)建一個數(shù)據(jù)庫,如下圖,在php(做為現(xiàn)在的主流開發(fā)語言)MyAdmin右邊窗口中,填寫數(shù)據(jù)庫名稱,點創(chuàng)建即可。
例如我們這里創(chuàng)建一個名字為:cncmstest 的數(shù)據(jù)庫
創(chuàng)建成功會有如下提示:
3、點擊左上角的主頁按鈕,返回php(做為現(xiàn)在的主流開發(fā)語言)MyAdmin主界面:
4、在主界面的右邊點擊“權(quán)限”來創(chuàng)建數(shù)據(jù)庫帳號。
5、在權(quán)限頁面中,我們點擊“添加新用戶”
6、在該頁面中,我們填寫要創(chuàng)建的數(shù)據(jù)庫用戶名,該用戶的訪問范圍,及密碼。
如上圖,我們填寫了用戶名為:cncmsuser,該數(shù)據(jù)庫用戶只允許本機訪問,主機一項選擇本地;密碼我們使用自動生成的,點下面的“Generate”會生成一個隨機密碼,然后點“Copy”會自動填寫到密碼框中。
下面的框都不選,直接拉到頁面最下面點執(zhí)行即可創(chuàng)建一個新用戶。
數(shù)據(jù)庫用戶創(chuàng)建成功,會返回如下頁面:
7、最重要的一步,設(shè)置該用戶的數(shù)據(jù)庫訪問權(quán)限
在數(shù)據(jù)庫用戶添加成功返回的頁面中可以直接設(shè)置權(quán)限。這里我們選擇按數(shù)據(jù)庫指定權(quán)限:
如上圖,在數(shù)據(jù)庫列表中選擇我們剛剛創(chuàng)建的cncmstest,即會自動進入該數(shù)據(jù)庫的權(quán)限設(shè)置頁面。
在上圖的權(quán)限設(shè)置中,我們把“數(shù)據(jù)”、“結(jié)構(gòu)”兩列的權(quán)限全部選中,管理權(quán)限都不要選。點執(zhí)行即可。
到這里,我們已經(jīng)全部設(shè)置完畢了,創(chuàng)建了一個數(shù)據(jù)庫:cncmstest,并創(chuàng)建了數(shù)據(jù)庫用戶cncmsuser,特別指定了該用戶只對cncmstest的訪問權(quán)限。如此,便達到了我們一開始所講的目的:為每一個數(shù)據(jù)庫指定獨立的用戶訪問權(quán)限。