此類庫簡單、易用,便于你自己修改和對功能的改善,能解決大部分
成都網站設計、網站制作的關注點不是能為您做些什么網站,而是怎么做網站,有沒有做好網站,給創新互聯一個展示的機會來證明自己,這并不會花費您太多時間,或許會給您帶來新的靈感和驚喜。面向用戶友好,注重用戶體驗,一切以用戶為中心。
PHP
項目中執行的
SQL
操作。
初步工作
首先,請大家下載這個類庫
M.class.php 再下載一個
Mysqli
連接數據庫的類庫
MysqliDb.class.php(打包下載地址)
新建一個
includes
的文件夾,將下載下來的兩個
class
文件,放進去。
然后,請你在項目下創建一個
test.php
文件。注:UTF-8
文件格式
請先根據你機器的情況,填充以下代碼,用于連接數據庫:
復制代碼
代碼如下:
header('Content-Type:text/html;Charset=utf-8');
define('ROOT_PATH',
dirname(__FILE__));
define('DB_HOST',
'localhost');
//數據庫服務器地址
define('DB_USER',
'root');
//數據庫用戶名
define('DB_PWD',
'×××');//數據庫密碼
define('DB_NAME',
'×××');
//數據庫名稱
define('DB_PORT',
'3306');
//數據庫端口
function
__autoload($className)
{
require_once
ROOT_PATH
.
'/includes/'.
ucfirst($className)
.'.class.php';
//自動加載
class
文件
}
好了,上面的這些操作都是初步工作,下面正式進入類庫的講解。
類庫講解
首先,我們得實例化
M.class.php,實例化很簡單:
復制代碼
代碼如下:
$m
=
new
M();
//這步操作代表
M.class.php
中的所有功能都封裝在了變量
$m
中
注:
1、M類庫中的方法參數說明,請到
M.class.php
文件中看詳細的注釋,這里不再進行敘述。建議在學習的時候,對照著看下文件中的參數即注釋。
2、講解代碼中用到的數據庫結構為:
復制代碼
代碼如下:
CREATE
TABLE
`user`
(
`id`
int(8)
unsigned
NOT
NULL
auto_increment,
`name`
varchar(50)
default
NULL,
`email`
varchar(100)
default
NULL,
`age`
smallint(3)
default
NULL,
`class_id`
int(8)
default
NULL,
`commit_time`
int(10)
default
NULL,
PRIMARY
KEY
(`id`),
KEY
`name`
(`name`)
)
ENGINE=MyISAM
DEFAULT
CHARSET=utf8
復制代碼
代碼如下:
CREATE
TABLE
`class`
(
`class_id`
int(8)
NOT
NULL
auto_increment,
`class_name`
varchar(100)
default
NULL,
PRIMARY
KEY
(`class_id`)
)
ENGINE=InnoDB
DEFAULT
CHARSET=utf8
并添加一條測試數據。
3、M類庫中,大部分方法都分兩中類型,即:SQL方法;拼接方法,具體在實例中可以看出
4、以下稱述中的
M
為
M.class.php
文件
方法1、Insert()
添加數據
Insert
方法的全部使用案例如下:
復制代碼
代碼如下:
$m-Insert("user",
null,
array('焦焦',
'liruxing1715@sina點抗 ',
'23',
time()));
//
拼接方法:往`user`表中添加一條數據,返回值為數據庫影響的行數
$m-Insert("user",
null,
array('焦焦',
'liruxing1715@sina點抗 ',
'23',
time()),
true);
//
功能同上,返回
last_insert_id(插入的增長id)
$m-Insert("INSERT
INTO
`user`
(`name`,
`email`,
`age`,
`commit_time`)
VALUES
('張小花',
'zhangxiaohua@sina點抗 點吸煙 ',
'22',
'".time()."')");
//SQL方法,返回值為數據庫影響的行數
$m-Insert("INSERT
INTO
`user`
(`name`,
`email`,
`age`,
`commit_time`)
VALUES
('張小花',
'zhangxiaohua@sina點抗 點吸煙 ',
'22',
'".time()."')",
true);
//
同上,返回
last_insert_id
注:Insert
方法中的第二個參數若為null,可自動獲得插入表除
auto_increment
字段之外的所有字段,詳情請看M源文件;若要返回值為最后插入的
ID,那么請設置
Insert
方法的最后一個參數為
true(默認是false);
方法2、Update()
修改數據
update
方法的全部使用案例如下:
復制代碼
代碼如下:
$m-Update("user",
array('name'='李茹茹',
'age'=24),
"id=1");
//拼接方法,修改id為1的數據的名稱為“李茹茹”;年齡為“24”,其方法的返回值為受影響的行數
$m-Update("UPDATE
`user`
SET
`name`='李茹茹',
`age`=24
WHERE
id
=
1");
//SQL
用法,功能同上
方法3、Del()
刪除數據
Del
方法的全部使用案例如下:
復制代碼
代碼如下:
$m-Del('user',
'id=3');
//拼接方法:刪除`user`表中
id
為3的數據,返回受影響的行數
$m-Del("DELETE
FROM
`user`
WHERE
id=4");
//SQL方法:刪除`user`表中
id
為4的數據,返回受影響的行數
$m-Del("DELETE
FROM
`user`
WHERE
id
in
(10,
11,
12)");
//SQL方法:刪除多條數據,刪除`user`表中
id
為
10、11、12
的數據,返回受影響的行數
方法4、Total()
獲取記錄數,返回值都為int
Del
方法的全部使用案例如下:
復制代碼
代碼如下:
$m-Total('user');
//拼接方法:返回
`user`表中的記錄數,無條件
$m-Total('user',
'id1');
//拼接方法:返回
`user`表中
id
大于1的記錄數,有條件
$m-Total("SELECT
COUNT(*)
AS
total
FROM
`user`");
//SQL方法,注:使用SQL方法,語句中必須使用
"AS
total",否則會報錯
方法5、IsExists()
檢查數據是否存在,返回值為boolean
復制代碼
代碼如下:
$m-IsExists('user',
"`name`='焦焦'");
//拼接方法:返回`user`表中是否存在`name`為“焦焦”的數據,返回true,若不存在,返回false
方法6、InsertId()
獲取表下一個添加的自動增長id,注意,這里不進行添加操作,只是獲取下一個增長id
復制代碼
代碼如下:
echo
$m-InsertId('user');
//獲取`user`
表下一個添加的自動增長id
方法7、GetRow()
返回單條數據,返回值為一維數組
GetRow
方法的全部使用案例如下:
復制代碼
代碼如下:
$data
=
$m-GetRow("SELECT
`name`,email
FROM
`user`
WHERE
id=1");
//SQL方法,返回一維數組,例如:Array
(
[name]
=
焦焦
[email]
=
liruxing1715@sina點抗
)
$data
=
$m-GetRow("SELECT
u.`name`,
u.email,
c.class_name
FROM
`user`
u,
`class`
c
WHERE
u.class_id=c.class_id
AND
u.id=1");
//SQL方法,多表查詢
$data
=
$m-GetRow('user',
'`name`,email',
"id=1");
//拼接方法
$data
=
$m-GetRow('user
as
u,`class`
c',
'u.`name`,u.email,c.class_name',
"u.id=1
AND
u.class_id=c.class_id");
//拼接方法,多表查詢
$data
=
$m-GetRow("SELECT
`name`,email
FROM
`user`");
//如果沒有指定條件應該是顯示全部信息,但是在此方法中將默認顯示第一條(不推薦這么使用!!!)
$data
是查詢出來的一維數組。
方法8、GetOne()
返回單個數據
GetOne
方法的全部使用案例如下:
復制代碼
代碼如下:
$name
=
$m-GetOne("SELECT
`name`
FROM
`user`
WHERE
id=1");
//SQL方法,返回一個字符串,例如:焦焦
$name
=
$m-GetOne("user",
"name",
"id=1");
//拼接方法,返回一個字符串,例如:焦焦
方法9、FetchAll()
返回所有記錄
復制代碼
代碼如下:
$data
=
$m-FetchAll("user");
//返回`user`表中的所有記錄,以二維數組的形式
$data
=
$m-FetchAll("SELECT
*
FROM
`user`");
//SQL
方法,功能和返回值同上
$data
=
$m-FetchAll("user",
"name,email",
"id1",
'id
DESC',
'2');
//返回兩條id1的數據,只顯示name,email,并且以id
為倒序排序。注:請注意該方法的最后一個參數也可以為'0,2',目的是為分頁準備的,如果第一頁為'0,2'的話,那么第二頁就是'2,2'
//該方法也支持聯表查詢和多表查詢,下面以聯表查詢為例
$data
=
$m-FetchAll("`user`
as
u
LEFT
JOIN
`class`
as
c
ON
u.class_id=c.class_id",
"u.`name`,u.email,
c.class_name",
"u.id=1");
//注意:該拼接方法中,ON
添加的位置
注:對于該
FetchAll
方法,后續我會寫一篇使用該方法進行完美分頁的文章!!請關注。
方法10、MultiQuery()
執行多條SQL語句
復制代碼
代碼如下:
$sql
=
"INSERT
INTO
user
(`name`,email,
age,
class_id,
commit_time)
VALUES
('賈花花',
'jiahuahua@sina點抗 點吸煙 ',
'22',
'1',
'".time()."')";
//添加一個名叫“賈花花”的學生信息
$sql
.=
";DELETE
FROM
`user`
WHERE
`name`='焦焦'";
//刪除一條名叫“焦焦”的學生信息
//解釋:$sql
是多條
SQL
以英文;(分號)拼接起來的
$data
=
$m-MultiQuery($sql);
//返回為true,代表執行成功;為false,代表執行失敗
類庫講解完畢
到此該類庫的全部功能就講解完畢,希望你能多看看M文件,了解其內部運行的機制。M
文件不會存在執行緩慢情況,請大家放心使用。
如果在使用過程中出現
SQL
拼接錯誤,類庫會報出友善的錯誤提示。
有問題請留言,歡迎大家的批評和建議,加油!學習好運。
本文實例講述了PHP利用pdo_odbc實現連接數據庫。分享給大家供大家參考,具體如下:
目的:從sql
server數據庫里面把某個視圖文件調用出來,以鍵值對的方式顯示在頁面上。
利用pdo
odbc來實現PHP連接數據庫:
在PHP配置文件里面開啟pdo_odbc.dll服務。重啟Apache服務器。
在ThinkPHP5.1的項目中在模塊里添加config添加規定好的樣式數據庫:
代碼如下:
?php
return
[
//
數據庫類型
'type'
=
'sqlsrv',
//
服務器地址
'hostname'
=
'localhost',
//
數據庫名
'database'
=
'mysql',
//
用戶名
'username'
=
'sa',
//
密碼
'password'
=
'123456',
//
端口
'hostport'
=
'',
//
連接dsn
'dsn'
=
'odbc:Driver={SQL
Server};Server=localhost;Database=mysql',
//
數據庫連接參數
'params'
=
[],
//
數據庫編碼默認采用utf8
'charset'
=
'utf8',
//
數據庫表前綴
'prefix'
=
'',
//
數據庫調試模式
'debug'
=
true,
//
數據庫部署方式:0
集中式(單一服務器),1
分布式(主從服務器)
'deploy'
=
0,
//
數據庫讀寫是否分離
主從式有效
'rw_separate'
=
false,
//
讀寫分離后
主服務器數量
'master_num'
=
1,
//
指定從服務器序號
'slave_no'
=
'',
//
是否嚴格檢查字段是否存在
'fields_strict'
=
true,
//
數據集返回類型
'resultset_type'
=
'array',
//
自動寫入時間戳字段
'auto_timestamp'
=
false,
//
時間字段取出后的默認時間格式
'datetime_format'
=
'Y-m-d
H:i:s',
//
是否需要進行SQL性能分析
'sql_explain'
=
false,
//
Builder類
'builder'
=
'',
//
Query類
'query'
=
'\\think\\db\\Query',
//
是否需要斷線重連
'break_reconnect'
=
false,
//
斷線標識字符串
'break_match_str'
=
[],
];
?
在控制器controller里面建一個控制文件Test.php
代碼如下:
?php
namespace
app\index\controller;
use
think\Db;
use
think\Controller;
class
Test
extends
Controller
{
public
function
zz(){
$data=Db::view('View_2')-select();
echo
json_encode($data);
}
}
?
最后調用入口文件即可訪問。
我的效果:
[{"111":"123","1112":"LLP","232":"1","ROW_NUMBER":"1"},{"111":"123","1112":"BB","232":"2","ROW_NUMBER":"2"}]
更多關于thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結》、《ThinkPHP常用方法總結》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend
FrameWork框架入門教程》及《PHP模板技術總結》。
希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所幫助。
您可能感興趣的文章:ThinkPHP實現多數據庫連接的解決方法tp5(thinkPHP5)框架實現多數據庫查詢的方法ThinkPHP3.1新特性之多數據庫操作更加完善tp5(thinkPHP5)框架連接數據庫的方法示例PHP7使用ODBC連接SQL
Server2008
R2數據庫示例【基于thinkPHP5.1框架】thinkPHP5實現的查詢數據庫并返回json數據實例tp5(thinkPHP5)操作mongoDB數據庫的方法tp5(thinkPHP5)框架數據庫Db增刪改查常見操作總結thinkPHP5框架實現多數據庫連接,跨數據連接查詢操作示例
php 連接數據庫的幾種方式
$con = mysql_connect(服務器,服務器用戶名,服務器密碼默認為“”)
mysql_select_db(數據庫,$con)選擇數據庫
mysql_query($sql,$con);
$con = mysqli_connect(服務器,服務器用戶名,服務器密碼默認為“”,數據庫名)
$query = mysqli_query($conn,$sql);
$conn = new mysqli(服務器,服務器用戶名,服務器密碼默認為“”,數據庫名);
$query = $conn-query($sql);
ezSQL是一個非常好用的PHP數據庫操作類 著名的開源博客WordPress的數據庫操作就使用了ezSQL的MySQL部分 該數據庫操作類支持幾乎所有主流的數據庫 如 PHP PDO mySQL Oracle InterBase/FireBird PostgreSQL SQLite以及MS SQL等 ezSQL具有很強的調試功能 可以快速地查看SQL代碼的執行情況 使用ezSQL 可以為我們節省開發時間 簡化代碼并提高運行效率
ezSQL的優點就不用多說了 它小巧 快速 簡單 易用 并且開源 還有就是安全 你沒想到的細節它都為你考慮了 你只需要在你的腳本開頭包含相關的PHP文件 然后你就可以使用更好用的一套ezSQL函數來代替標準的PHP數據庫操作函數
下面是ezSQL中一些主要的函數
$db get_results 從數據庫中讀取數據集
$db get_row 從數據庫中讀取一行數據
$db get_col 從數據庫中讀取一列指定的數據集
$db get_var 從數據庫的數據集中讀取一個值
$db query 執行一條SQL語句
$db debug 打印最后執行的SQL語句及其返回的結果
$db vardump 打印變量的結構及其內容
$db select 選擇一個新數據庫
$db get_col_info 獲取列的信息
$db hide_errors 隱藏錯誤
$db show_errors 顯示錯誤
ezSQL的使用方法很簡單 首先下載ezSQL源代碼 然后將ez_sql_core php文件和ez_sql_mysql php文件(這里以mySQL為例)放到與你的腳本文件相同的目錄下 然后將下面的代碼添加到你的腳本文件的最前面 這樣就可以正常使用ezSQL了
?php// 包含ezSQL的核心文件include_once?"ez_sql_core php";// 包含ezSQL具體的數據庫文件 這里以mySQL為例include_once?"ez_sql_mysql php";// 初始化數據庫對象并建立數據庫連接$db?=?new?ezSQL_mysql( db_user db_password db_name db_host );?
下面是ezSQL中一些主要函數的應用實例 這些代碼均來自于ezSQL的官方幫助文檔
實例一
// Select multiple records from the database and print them out $users?=?$db get_results("SELECT name email FROM users");foreach?(?$users?as?$user?)?{? ? ? ? ? ??// Access data using object syntax? ? ? ? ? ??echo?$user name;? ? ? ? ? ??echo?$user email;}
實例二
// Get one row from the database and print it out $user?=?$db get_row("SELECT name email FROM users WHERE id = ");echo?$user name;echo?$user email;
實例三
// Get one variable from the database and print it out $var?=?$db get_var("SELECT count(*) FROM users");echo?$var;
實例四
// Insert into the database$db query("INSERT INTO users (id name email) VALUES (NULL justin jv@foo )");
實例五
// Update the database$db query("UPDATE users SET name = Justin WHERE id = )");
實例六
// Display last query and all associated results$db debug();
實例七
// Display the structure and contents of any result(s) or any variable$results?=?$db get_results("SELECT name email FROM users");$db vardump($results);
實例八
// Get one column (based on column index) and print it out $names?=?$db get_col("SELECT name email FROM users" )foreach?(?$names?as?$name?)?{? ??echo?$name;}
實例九
// Same as above ‘but quicker’foreach?(?$db get_col("SELECT name email FROM users" )?as?$name?)?{? ??echo?$name;}
實例十
lishixinzhi/Article/program/PHP/201311/21297
分享文章:php數據庫類實例 php數據庫語句
文章源于:http://vcdvsql.cn/article34/ddseese.html
成都網站建設公司_創新互聯,為您提供虛擬主機、定制開發、商城網站、網站策劃、網站導航、移動網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯