一、PHP操作MySql數(shù)據(jù)庫
創(chuàng)新互聯(lián)公司服務(wù)項目包括菏澤網(wǎng)站建設(shè)、菏澤網(wǎng)站制作、菏澤網(wǎng)頁制作以及菏澤網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,菏澤網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到菏澤省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
新增數(shù)據(jù)
?php
$query = "INSERT INTO grade (name,email,point,regdate) VALUE
(' 李三','yc60.com@gmail.com',,NOW())" ;
@mysql_query($query) or die( '添加數(shù)據(jù)出錯:' .mysql_error());
?
修改數(shù)據(jù)
?php
$query = "UPDATE grade SET name='小可愛' WHERE id=6" ;
@mysql_query($query) or die( '修改出錯:' .mysql_error());
?
刪除數(shù)據(jù)
?php
$query = "DELETE FROM grade WHERE id=6";
@mysql_query($query) or die( '刪除錯誤:' .mysql_error());
?
顯示數(shù)據(jù)
?php
$query = "SELECT id,name,email,point FROM grade";
$result = @mysql_query($query) or die( '查詢語句出錯:' .mysql_error());
while (!! $row = mysql_fetch_array($result)) {
echo $row[ 'id' ]. '----' .$row['name' ].'----' .$row ['email' ]. '----' .$row['point' ];
echo 'br /';
}
?
二、其他常用函數(shù)
mysql_f etch_row() :從結(jié)果集中取得一行作為枚舉數(shù)組
mysql_f etch_assoc() : 從結(jié)果集中取得一行作為關(guān)聯(lián)數(shù)組
mysql_f etch_array() : 從結(jié)果集中取得一行作為關(guān)聯(lián)數(shù)組,或數(shù)字?jǐn)?shù)組,或二者兼有
mysql_f etch_lengths () : 取得結(jié)果集中每個輸出的長度
mysql_f ield_name(): 取得結(jié)果中指定字段的字段名
mysql_num_rows(): 取得結(jié)果集中行的數(shù)目
mysql_num_f ields():取得結(jié)果集中字段的數(shù)目
mysql_get_client_inf o() : 取得 MySQL 客戶端信息
mysql_get_host_info(): 取得 MySQL 主機(jī)信息
mysql_get_proto_info(): 取得 MySQL 協(xié)議信息
mysql_get_server_inf o() : 取得 MySQL 服務(wù)器信息
建立數(shù)據(jù)庫:
步驟:核心-頻道模式-內(nèi)容模型管理,添加一個內(nèi)容模塊(手動添加你需要的數(shù)據(jù)字段)然后建立.demo.php文件(demo自己命名),寫一個數(shù)據(jù)入庫操作(如果你的網(wǎng)站要處理大數(shù)據(jù)量的訪問的話,建議封裝函數(shù))。其中(數(shù)據(jù)主表:dede_archives
數(shù)據(jù)索引:dede_arctiny)和你添加的新表對應(yīng)字段才能進(jìn)行入庫操作,但織夢的各個版本不同,字段也不同,需要樓主自己考慮,數(shù)據(jù)入庫之后,就好辦了。
添加
核心-網(wǎng)站欄目管理,添加你的需求欄目,這樣就可以在織夢后臺讀取你的訂單了。
如果想前臺讀取的話,我想這個就比較簡單了,你自己可以解決的。
不懂的話,請再追問
input的name用數(shù)組,比如:
tr
tdinput?type="text"?name="name1[]"/td
tdinput?type="text"?name="name2[]"/td
/tr
tr
tdinput?type="text"?name="name1[]"/td
tdinput?type="text"?name="name2[]"/td
/tr
tr
tdinput?type="text"?name="name1[]"/td
tdinput?type="text"?name="name2[]"/td
/tr
提交后$_POST['name1']、$_POST['name2']都會以數(shù)組的方式儲存著3行tr的每個值,通過foreach可以把它們逐行添加進(jìn)數(shù)據(jù)表
首先說基本配置:
PHP SQLite 的使用和配置方法:
在PHP 5.1.x 以后自帶了 SQLtie 數(shù)據(jù)庫功能,只需要在配置PHP.ini中開啟即可
;extension=php_sqlite.dll
在PHP 5.2.x 以后自帶了 SQLtie PDO數(shù)據(jù)庫功能,只需要在配置PHP.ini中開啟即可
;extension=php_pdo_sqlite.dll
SQLite 數(shù)據(jù)庫管理:
1、SQLiteManager與PHPmyadmin不同,需要添加管理的數(shù)據(jù)庫
2、Windows下使用添加路徑需要將 X: \**\** 改為 X:/**/**
3、 創(chuàng)建數(shù)據(jù)庫的時候需要指定SQLite 數(shù)據(jù)庫文件存放的路徑
再說操作:
?php
$db_path = 'sqlite3_db_php';
$db = new SQLite3($db_path); //這就是創(chuàng)建數(shù)據(jù)庫,也是連接數(shù)據(jù)庫
if (!!$db) {
//下面創(chuàng)建一個表格
$db-exec('CREATE TABLE user (id integer primary key, name varchar(32), psw varchar(32))');
windows和Linux都能執(zhí)行
Oracle Call Interface(OCI)使用戶可以訪問 Oracle 10,Oracle9,Oracle8 和 Oracle7 數(shù)據(jù)庫。支持將 PHP 變量與 Oracle 占位符(placeholder)綁定,具有完整的 LOB,F(xiàn)ILE 和 ROWID 支持,以及允許使用用戶提供的定義變量。
例子 1. 基本查詢
?php
$conn = oci_connect('hr', 'hr', 'orcl');
if (!$conn) {
$e = oci_error();
print htmlentities($e['message']);
exit;
}
$query = 'SELECT * FROM DEPARTMENTS';
$stid = oci_parse($conn, $query);
if (!$stid) {
$e = oci_error($conn);
print htmlentities($e['message']);
exit;
}
$r = oci_execute($stid, OCI_DEFAULT);
if(!$r) {
$e = oci_error($stid);
echo htmlentities($e['message']);
exit;
}
print 'table border="1"';
while($row = oci_fetch_array($stid, OCI_RETURN_NULLS)) {
print 'tr';
foreach($row as $item) {
print 'td'.($item?htmlentities($item):'?').'/td';
}
print '/tr';
}
print '/table';
oci_close($conn);
?
例子 2. 用綁定變量插入
?php
// Before running, create the table:
// CREATE TABLE MYTABLE (mid NUMBER, myd VARCHAR2(20));
$conn = oci_connect('scott', 'tiger', 'orcl');
$query = 'INSERT INTO MYTABLE VALUES(:myid, :mydata)';
$stid = oci_parse($conn, $query);
$id = 60;
$data = 'Some data';
oci_bind_by_name($stid, ':myid', $id);
oci_bind_by_name($stid, ':mydata', $data);
$r = oci_execute($stid);
if($r)
print "One row inserted";
oci_close($conn);
?
例子 3. 將數(shù)據(jù)插入到 CLOB 列中
?php
// Before running, create the table:
// CREATE TABLE MYTABLE (mykey NUMBER, myclob CLOB);
$conn = oci_connect('scott', 'tiger', 'orcl');
$mykey = 12343; // arbitrary key for this example;
$sql = "INSERT INTO mytable (mykey, myclob)
VALUES (:mykey, EMPTY_CLOB())
RETURNING myclob INTO :myclob";
$stid = oci_parse($conn, $sql);
$clob = oci_new_descriptor($conn, OCI_D_LOB);
oci_bind_by_name($stid, ":mykey", $mykey, 5);
oci_bind_by_name($stid, ":myclob", $clob, -1, OCI_B_CLOB);
oci_execute($stid, OCI_DEFAULT);
$clob-save("A very long string");
oci_commit($conn);
// Fetching CLOB data
$query = 'SELECT myclob FROM mytable WHERE mykey = :mykey';
$stid = oci_parse ($conn, $query);
oci_bind_by_name($stid, ":mykey", $mykey, 5);
oci_execute($stid, OCI_DEFAULT);
print 'table border="1"';
while ($row = oci_fetch_array($stid, OCI_ASSOC)) {
$result = $row['MYCLOB']-load();
print 'trtd'.$result.'/td/tr';
}
print '/table';
?
可以很容易地訪問存儲過程,就和從命令行訪問一樣。 例子 4. 使用存儲過程
?php
// by webmaster at remoterealty dot com
$sth = oci_parse($dbh, "begin sp_newaddress( :address_id, '$firstname',
'$lastname', '$company', '$address1', '$address2', '$city', '$state',
'$postalcode', '$country', :error_code );end;");
// This calls stored procedure sp_newaddress, with :address_id being an
// in/out variable and :error_code being an out variable.
// Then you do the binding:
oci_bind_by_name($sth, ":address_id", $addr_id, 10);
oci_bind_by_name($sth, ":error_code", $errorcode, 10);
oci_execute($sth);
?
連接處理
OCI8 擴(kuò)展提供了 3 個不同函數(shù)來連接 Oracle。取決于用戶來使用對自己的應(yīng)用程序最合適的函數(shù)。本節(jié)的信息有助于用戶作出合適的選擇。
連接到 Oracle 服務(wù)器從所需的時間上來講是個相當(dāng)花費的操作。oci_pconnect() 函數(shù)使用了一個連接的持久緩沖區(qū),可以被不同的腳本請求重復(fù)使用。這意味著通常在每個 PHP 進(jìn)程(或 Apache 子進(jìn)程)中只需要連接一次。
如果應(yīng)用程序連接 Oracle 時對每個 web 用戶都使用了不同的認(rèn)證信息,則由 oci_pconnect() 使用的持久緩沖區(qū)就用處不大了,因為隨著并發(fā)用戶的增加,到某個程度后會由于要保持太多的空閑連接而對 Oracle 服務(wù)器的整體性能起到逆反的影響。如果應(yīng)用程序是這樣的架構(gòu),建議要么用 oci8.max_persistent 和 oci8.persistent_timeout 配置選項(此二者可以使用戶控制持久連接緩沖區(qū)的大小和生命周期)來協(xié)調(diào)應(yīng)用程序,要么用 oci_connect() 來連接。
oci_connect() 和 oci_pconnect() 都使用了一個連接緩沖區(qū)。如果在某個腳本中用同樣的參數(shù)多次調(diào)用 oci_connect(),則第二個和之后的調(diào)用會返回已有的連接句柄。oci_connect() 使用的連接緩沖區(qū)會在腳本執(zhí)行完畢后或者明確地關(guān)閉了連接句柄時被清空。oci_pconnect() 有相似的行為,不過其緩沖區(qū)獨立地維持著并在不同請求之間都存活著。
要記住此緩沖特性,因為它使兩個句柄沒有在事務(wù)級隔離開來(事實上是同一個連接句柄,因此沒有任何方式的隔離)。如果應(yīng)用程序需要兩個獨立的,事務(wù)級隔離的連接,應(yīng)該使用 oci_new_connect()。
oci_new_connect() 總是創(chuàng)建一個到 Oracle 服務(wù)器的新連接,不管其它連接是否已經(jīng)存在。高流量的 web 應(yīng)用應(yīng)該避免使用 oci_new_connect(),尤其是在程序最忙的部分。
有關(guān)于它的其他函數(shù):
目錄
OCI-Collection-append -- 向 collection 增加單元
OCI-Collection-assign -- 從現(xiàn)有的另一個 collection 向 collection 賦值
OCI-Collection-assignElem -- 給 collection 中的單元賦值
OCI-Collection-free -- 釋放關(guān)聯(lián)于 collection 的對象的資源
OCI-Collection-getElem -- 返回單元的值
OCI-Collection-max -- 返回 collection 中單元的最大數(shù)目
OCI-Collection-size -- 返回 collection 中的單元數(shù)目
OCI-Collection-trim -- 從 collection 尾端開始刪除單元
OCI-Lob-append -- Appends data from the large object to another large object
OCI-Lob-close -- 關(guān)閉 LOB 描述符
OCI-Lob-eof -- Tests for end-of-file on a large object's descriptor
OCI-Lob-erase -- Erases a specified portion of the internal LOB data
OCI-Lob-export -- 將 LOB 的內(nèi)容導(dǎo)出到文件中
OCI-Lob-flush -- Flushes/writes buffer of the LOB to the server
OCI-Lob-free -- 釋放與 LOB 描述符所關(guān)聯(lián)的資源
OCI-Lob-getBuffering -- Returns current state of buffering for the large object
OCI-Lob-import -- 將數(shù)據(jù)從文件導(dǎo)入 LOB
OCI-Lob-load -- 返回大對象的內(nèi)容
OCI-Lob-read -- Reads part of the large object
OCI-Lob-rewind -- Moves the internal pointer to the beginning of the large object
OCI-Lob-save -- 將數(shù)據(jù)保存到大對象中
OCI-Lob-seek -- Sets the internal pointer of the large object
OCI-Lob-setBuffering -- Changes current state of buffering for the large object
OCI-Lob-size -- Returns size of large object
OCI-Lob-tell -- Returns current position of internal pointer of large object
OCI-Lob-truncate -- Truncates large object
OCI-Lob-write -- Writes data to the large object
OCI-Lob-writeTemporary -- 寫入一個臨時的大對象
oci_bind_by_name -- 綁定一個 PHP 變量到一個 Oracle 位置標(biāo)志符
oci_cancel -- 取消從游標(biāo)讀取數(shù)據(jù)
oci_close -- 關(guān)閉 Oracle 連接
oci_commit -- 提交未執(zhí)行的事務(wù)處理
oci_connect -- 建立一個到 Oracle 服務(wù)器的連接
oci_define_by_name -- 在 SELECT 中使用 PHP 變量作為定義的步驟
oci_error -- 返回上一個錯誤
oci_execute -- 執(zhí)行一條語句
oci_fetch_all -- 獲取結(jié)果數(shù)據(jù)的所有行到一個數(shù)組
oci_fetch_array -- Returns the next row from the result data as an associative or numeric array, or both
oci_fetch_assoc -- Returns the next row from the result data as an associative array
oci_fetch_object -- Returns the next row from the result data as an object
oci_fetch_row -- Returns the next row from the result data as a numeric array
oci_fetch -- Fetches the next row into result-buffer
oci_field_is_null -- 檢查字段是否為 NULL
oci_field_name -- 返回字段名
oci_field_precision -- 返回字段精度
oci_field_scale -- 返回字段范圍
oci_field_size -- 返回字段大小
oci_field_type_raw -- 返回字段的原始 Oracle 數(shù)據(jù)類型
oci_field_type -- 返回字段的數(shù)據(jù)類型
oci_free_statement -- 釋放關(guān)聯(lián)于語句或游標(biāo)的所有資源
oci_internal_debug -- 打開或關(guān)閉內(nèi)部調(diào)試輸出
oci_lob_copy -- Copies large object
oci_lob_is_equal -- Compares two LOB/FILE locators for equality
oci_new_collection -- 分配新的 collection 對象
oci_new_connect -- 建定一個到 Oracle 服務(wù)器的新連接
oci_new_cursor -- 分配并返回一個新的游標(biāo)(語句句柄)
oci_new_descriptor -- 初始化一個新的空 LOB 或 FILE 描述符
oci_num_fields -- 返回結(jié)果列的數(shù)目
oci_num_rows -- 返回語句執(zhí)行后受影響的行數(shù)
oci_parse -- 配置 Oracle 語句預(yù)備執(zhí)行
oci_password_change -- 修改 Oracle 用戶的密碼
oci_pconnect -- 使用一個持久連接連到 Oracle 數(shù)據(jù)庫
oci_result -- 返回所取得行中字段的值
oci_rollback -- 回滾未提交的事務(wù)
oci_server_version -- 返回服務(wù)器版本信息
oci_set_prefetch -- 設(shè)置預(yù)提取行數(shù)
oci_statement_type -- 返回 OCI 語句的類型
ocibindbyname -- oci_bind_by_name() 的別名
ocicancel -- oci_cancel() 的別名
ocicloselob -- OCI-Lob-close 的別名
ocicollappend -- OCI-Collection-append 的別名
ocicollassign -- OCI-Collection-assign 的別名
ocicollassignelem -- OCI-Collection-assignElem 的別名
ocicollgetelem -- OCI-Collection-getElem 的別名
ocicollmax -- OCI-Collection-max 的別名
ocicollsize -- OCI-Collection-size 的別名
ocicolltrim -- OCI-Collection-trim 的別名
ocicolumnisnull -- oci_field_is_null() 的別名
ocicolumnname -- oci_field_name() 的別名
ocicolumnprecision -- oci_field_precision() 的別名
ocicolumnscale -- oci_field_scale() 的別名
ocicolumnsize -- oci_field_size() 的別名
ocicolumntype -- oci_field_type() 的別名
ocicolumntyperaw -- oci_field_type_raw() 的別名
ocicommit -- oci_commit() 的別名
ocidefinebyname -- oci_define_by_name() 的別名
ocierror -- oci_error() 的別名
ociexecute -- oci_execute() 的別名
ocifetch -- oci_fetch() 的別名
ocifetchinto -- 獲取下一行到一個數(shù)組
ocifetchistatement -- oci_fetch_all() 的別名
ocifreecollection -- OCI-Collection-free 的別名
ocifreecursor -- oci_free_statement() 的別名
ocifreedesc -- OCI-Lob-free 的別名
ocifreestatement -- oci_free_statement() 的別名
ociinternaldebug -- oci_internal_debug() 的別名
ociloadlob -- OCI-Lob-load 的別名
ocilogoff -- oci_close() 的別名
ocilogon -- oci_connect() 的別名
ocinewcollection -- oci_new_collection() 的別名
ocinewcursor -- oci_new_cursor() 的別名
ocinewscriptor -- oci_new_descriptor() 的別名
ocinlogon -- oci_new_connect() 的別名
ocinumcols -- oci_num_fields() 的別名
ociparse -- oci_parse() 的別名
ociplogon -- oci_pconnect() 的別名
ociresult -- oci_result() 的別名
ocirollback -- oci_rollback() 別名
ocirowcount -- oci_num_rows() 的別名
ocisavelob -- OCI-Lob-save 的別名
ocisavelobfile -- OCI-Lob-import 的別名
ociserverversion -- oci_server_version() 的別名
ocisetprefetch -- oci_set_prefetch() 的別名
ocistatementtype -- oci_statement_type() 的別名
ociwritelobtofile -- OCI-Lob-export 的別名
ociwritetemporarylob -- OCI-Lob-writeTemporary 的別名