本文實(shí)例講述了PHP使用pdo連接access數(shù)據(jù)庫并循環(huán)顯示數(shù)據(jù)操作。分享給大家供大家參考,具體如下:

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供塔河網(wǎng)站建設(shè)、塔河做網(wǎng)站、塔河網(wǎng)站設(shè)計(jì)、塔河網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、塔河企業(yè)網(wǎng)站模板建站服務(wù),十余年塔河做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
PDO連接與查詢:
try
{
$conn
=
new
PDO("odbc:driver={microsoft
access
driver
(*.mdb)};
dbq=".realpath("MyDatabase.mdb"))
or
die("鏈接錯(cuò)誤!");
//echo
"鏈接成功!";
}
catch(PDOException
$e){
echo
$e-getMessage();
}
$sql
=
"select
*
from
users";
1.
foreach()方法
foreach
($conn-query($sql)
as
$row)
{
$row["UserID"];
$row["UserName"];
$row["UserPassword"];
}
2.
while()方法
$rs
=
$conn-query($sql);
$rs-setFetchMode(PDO::FETCH_NUM);
while($row=$rs-fetch()){
$row[0];
$row[1];
$row[2];
}
php使用PDO抽象層獲取查詢結(jié)果,主要有三種方式:
(1)PDO::query()查詢。
看下面這段php代碼:
?php
//PDO::query()查詢
$res
=
$db-query('select
*
from
user');
$res-setFetchMode(PDO::FETCH_NUM);
//數(shù)字索引方式
while
($row
=
$res-fetch()){
print_r($row);
}
?
(2)PDO-exec()處理sql
?php
//PDO-exec()處理sql
$db-setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
$res
=
$db-exec("insert
into
user(id,name)
values('','php點(diǎn)點(diǎn)通')");
echo
$res;
?
(3)PDO::prepare()預(yù)處理執(zhí)行查詢
?php
//PDO::prepare()預(yù)處理執(zhí)行查詢
$res
=
$db-prepare("select
*
from
user");
$res-execute();
while
($row
=
$res-fetchAll())
{
print_r($row);
}
?
setAttribute()
方法是設(shè)置屬性,常用參數(shù)如下:
PDO::CASE_LOWER
--
強(qiáng)制列名是小寫
PDO::CASE_NATURAL
--
列名按照原始的方式
PDO::CASE_UPPER
--
強(qiáng)制列名為大寫
setFetchMode方法來設(shè)置獲取結(jié)果集的返回值的類型,常用參數(shù)如下:
PDO::FETCH_ASSOC
--
關(guān)聯(lián)數(shù)組形式
PDO::FETCH_NUM
--
數(shù)字索引數(shù)組形式
PDO::FETCH_BOTH
--
兩者數(shù)組形式都有,這是默認(rèn)的
PDO::FETCH_OBJ
--
按照對(duì)象的形式,類似于以前的
mysql_fetch_object()
對(duì)上面總結(jié)如下:
查詢操作主要是PDO::query()、PDO::exec()、PDO::prepare()。
PDO-query()
—
處理一條SQL語句,并返回一個(gè)“PDOStatement”
PDO-exec()
—
處理一條SQL語句,并返回所影響的條目數(shù)
PDO::prepare()主要是預(yù)處理操作,需要通過$rs-execute()來執(zhí)行預(yù)處理里面的SQL語句
最后介紹兩個(gè)常用的函數(shù):
(1)fetchColumn()獲取指定記錄里一個(gè)字段結(jié)果,默認(rèn)是第一個(gè)字段!
?php
$res
=
$db-query('select
*
from
user');
//獲取指定記錄里第二個(gè)字段結(jié)果
$col
=
$res-fetchColumn(1);
echo
$col;
?
(2)fetchAll(),從一個(gè)結(jié)果集中獲取數(shù)據(jù),然后存放在關(guān)聯(lián)數(shù)組中
?php
$res
=
$db-query('select
*
from
user');
$res_arr
=$res-fetchAll();
print_r($res_arr);
?
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP基于pdo操作數(shù)據(jù)庫技巧總結(jié)》、《php+Oracle數(shù)據(jù)庫程序設(shè)計(jì)技巧總結(jié)》、《PHP+MongoDB數(shù)據(jù)庫操作技巧大全》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:PHP使用PDO連接ACCESS數(shù)據(jù)庫PHP數(shù)據(jù)庫鏈接類(PDO+Access)實(shí)例分享php中mysql連接方式PDO使用詳解關(guān)于php連接mssql:pdo
odbc
sql
serverPhp中用PDO查詢Mysql來避免SQL注入風(fēng)險(xiǎn)的方法php中在PDO中使用事務(wù)(Transaction)全新的PDO數(shù)據(jù)庫操作類php版(僅適用Mysql)php使用pdo連接并查詢sql數(shù)據(jù)庫的方法php使用pdo連接mssql
server數(shù)據(jù)庫實(shí)例PHP實(shí)現(xiàn)PDO的mysql數(shù)據(jù)庫操作類
?php
header('content-type:text/html;charset=utf-8');
$dsn = 'mysql:dbname=m-test;host=localhost';
$user = 'root';//數(shù)據(jù)庫用戶名
$passwd = '';//數(shù)據(jù)庫密碼
try {
$pdo = new pdo($dsn, $user, $passwd);
$pdo-query('set names utf8');//設(shè)置字符集
$result = $pdo-query('select * from user');//查詢數(shù)據(jù)庫
foreach ($result as $row) {
echo $row['id'];//輸出 id 號(hào)
echo ':';
echo $row['name'];//輸出 name
echo 'br /';
}
} catch (pdoexception $e) {
echo $e-getmessage();//錯(cuò)誤信息
}
?
不論幾條數(shù)據(jù),終究在php中都是數(shù)組,然后通過echo json_encode(php數(shù)組變量);直接輸出該函數(shù)就行,就是一段json數(shù)據(jù)
就是操作數(shù)據(jù)庫的方法,
pdo就是把操作數(shù)據(jù)庫的函數(shù)封裝成一個(gè)pdo類,其間做了安全驗(yàn)證而已。
在使用PDO之前首先要設(shè)置PHP.INI文件,使PHP支持PDO,因?yàn)镻HP5默認(rèn)是不支持的。在PHP安裝目錄下找到PHP.INI文件,打開并搜索extension=php_pdo.dll 和 extension=php_pdo_mysql.dll,將前面的分號(hào)(;)去掉,重啟apache即可。
接下來我們就開始寫PHP代碼了,首先是連接數(shù)據(jù)庫,看下面的例子:
!--?php
define('DB_NAME', 'pdo_test');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
try {
$DBH = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWORD);
$DBH---exec('SET CHARACTER SET '.DB_CHARSET);
$DBH-exec('SET NAMES '.DB_CHARSET);
} catch (PDOException $e) {
print "Error!: " . $e-getMessage() . "br";
die();
}
?
連接成功后,我們需要對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行增刪改查操作,這里主要用到exec和query兩個(gè)函數(shù)。
示例:
!--?php
//增加數(shù)據(jù)
$sql_insert = 'Insert INTO wp_options(blog_id,option_name,option_value,autoload) VALUES (0,'.time().rand(1,100).','.time().rand(1,100).',\'no\')';
$back = $DBH---exec($sql_insert); //返回 bool 的true or fal
$lastInsertId = $DBH-lastInsertId();
//刪除數(shù)據(jù)
$sql_delete = 'Delete FROM wp_options Where option_id='.$lastInsertId;
$back = $DBH-exec($sql_delete); //返回 bool 的true or fal
$lastInsertId = $DBH-lastInsertId();
//更新數(shù)據(jù)
$sql_update = 'Update wp_options SET option_name = \''.time().rand(1,100).'\' Where option_id='.$lastInsertId;
$lastUpdateId = $DBH-lastInsertId(); //返回的對(duì)應(yīng)的操作的id
//查詢數(shù)據(jù)
$sql_select = 'Select option_id FROM wp_options orDER BY option_id DESC LIMIT 4 ';
$back = $DBH-query($sql_select); //返回一個(gè)對(duì)象 這個(gè)對(duì)象可以用foreach 直接遍歷循環(huán) 循環(huán)的為查詢的結(jié)果集
$back = $DBH-query($sql_select)-fetch(); //返回一條數(shù)據(jù)結(jié)果 這個(gè)對(duì)象可以用foreach 直接遍歷循環(huán) 循環(huán)的為查詢的結(jié)果集
$back = $DBH-query($sql_select)-fetchAll(); //返回一個(gè)數(shù)組 這個(gè)對(duì)象可以用foreach 直接遍歷循環(huán) 循環(huán)的為查詢的結(jié)果集
$back = $DBH-query($sql_select)-fetchColumn(0); //返回一個(gè)字段字符串,這個(gè)字符串是返回的記錄的第一條記錄的第一個(gè)字段
?
到這里,PDO的基本操作基本上結(jié)束了。對(duì)于一般的企業(yè)網(wǎng)站,小型的管理系統(tǒng)基本上能滿足了,但是,如果我們開發(fā)大型網(wǎng)站或者邏輯較復(fù)雜的管理系統(tǒng),僅僅靠數(shù)據(jù)的讀寫是遠(yuǎn)遠(yuǎn)不夠的,我們可能還需要對(duì)數(shù)據(jù)庫的存儲(chǔ)過程、事務(wù)等對(duì)象進(jìn)行操作,下面我們繼續(xù)看看用PDO是如何實(shí)現(xiàn)的。如果還有更多問題可以去后盾網(wǎng)論壇問題求助專區(qū),希望我的回答對(duì)你有幫助!
工具/原料
電腦
WAMPServer(Window+Apache+MySQL+PHP集成開發(fā)環(huán)境,大家可以在網(wǎng)上下載)
方法/步驟
PDO配置。打開php.ini配置文件,找到下圖所示的配置信息,去掉要啟用的PDO前面的“#”號(hào)即可。另外一種方式是直接在啟動(dòng)的wampserver中找到php擴(kuò)展中的php_pdo_db.lib選項(xiàng),重啟wampserver服務(wù)器即可。
如何利用PDO連接數(shù)據(jù)庫。利用下面這條簡(jiǎn)單的語句即可連接數(shù)據(jù)庫
$pdo = newPDO("mysql:host=localhost;dbname=php100","root",“ ");
其中具體參數(shù)介紹如下圖所示:
PDO中常用的函數(shù)及其解釋如下。
PDO::query()主要是用于有記錄結(jié)果返回的操作,特別是SELECT操作
PDO::exec()主要是針對(duì)沒有結(jié)果集合返回的操作,如INSERT、UPDATE等操作
PDO::lastInsertId() 返回上次插入操作,主鍵列類型是自增的最后的自增ID
PDOStatement::fetch()是用來獲取一條記錄
PDOStatement::fetchAll()是獲取所有記錄集到一個(gè)中
下面通過一個(gè)簡(jiǎn)單的php代碼示例來具體介紹如何使用PDO進(jìn)行數(shù)據(jù)庫操作。
?php
//連接數(shù)據(jù)庫
$pdo = new PDO("mysql:host=localhost; dbname=member", "root","");
//在表user_list中插入數(shù)據(jù)
$pdo-exec("insert into user_list(uid, m_id, username, password) values(null,'3','testpdo','testpdo')");
//使用查詢語句
$sr = $pdo-query("select * from user_list");
//將查詢的結(jié)果循環(huán)輸出顯示
while($row=$sr-fetch()){
print_r($row);
}
?
命令行模式下,或者web模式下保存的路徑在服務(wù)器中,可以達(dá)到你的要求(有該路徑的權(quán)限即可)
如果是在web模式下,不提示直接保存到訪客的電腦中的某個(gè)位置,是不可以的。
web模式保存到客戶端,只能通過下載,由用戶指定,或保存到默認(rèn)的下載目錄。
以下是代碼示例:
$dsn?=?'mysql:dbname=testdb;host=127.0.0.1';
$user?=?'dbuser';
$password?=?'dbpass';
//連接數(shù)據(jù)庫?pdo
try?{
$dbh?=?new?PDO($dsn,?$user,?$password,?array(PDO::MYSQL_ATTR_INIT_COMMAND?=?"SET?NAMES?'UTF8'"));
}?catch?(PDOException?$e)?{
echo?'Connection?failed:?'?.?$e-getMessage();exit;
}
//讀取數(shù)據(jù),?具體sql你根據(jù)情況修改
$stat?=?$dbh-prepare('SELECT?*?FROM?`table`?WHERE?`id`0?LIMIT?100;');
$stat-execute();
$result?=?$stat-fetchAll(PDO::FETCH_ASSOC);
//創(chuàng)建csv文件并打開文件指針
$filepath='file.csv';
$fp?=?fopen($filepath,?'w');
//寫入數(shù)據(jù)
foreach($result?as?$i=$row){
//寫入標(biāo)題行
if($i==0){
fputcsv($fp,?array_keys($row));
}
fputcsv($fp,?$row);
}
//關(guān)閉文件指針
fclose($fp);
//把文件輸出到下載
$file?=?fopen($filepath,"r");?//?打開文件
$size=filesize($filepath);
Header("Content-type:?application/octet-stream");
Header("Accept-Ranges:?bytes");
Header("Accept-Length:?".$size);
Header("Content-Disposition:?attachment;?filename=download.csv");
echo?fread($file,$size);
fclose($file);
相關(guān)知識(shí)點(diǎn):
PHP: fputcsv
PHP:PDO
數(shù)據(jù)庫查詢的時(shí)候只返回列名,防止列出現(xiàn)重復(fù),csv里會(huì)有重復(fù)的數(shù)據(jù)
網(wǎng)頁名稱:phppdo導(dǎo)出數(shù)據(jù) php導(dǎo)出文件
文章出自:http://www.jbt999.com/article2/hppioc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、ChatGPT、網(wǎng)站導(dǎo)航、標(biāo)簽優(yōu)化、動(dòng)態(tài)網(wǎng)站、微信公眾號(hào)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容