php操作mysql步驟:
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),龍子湖企業(yè)網(wǎng)站建設(shè),龍子湖品牌網(wǎng)站建設(shè),網(wǎng)站定制,龍子湖網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,龍子湖網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
1.$connect=mysql_connect('localhost','root','123456')
or
die('數(shù)據(jù)庫連接失敗。'mysql_error());鏈接mysql。
2.mysql_select_db('database',$connect)選擇鏈接的數(shù)據(jù)庫。
3.mysql_query('Set
names
gb2312');$sql
=
"select
*
from
blog_article";準備要查詢的數(shù)據(jù)。
4.$datas
=
mysql_query($sql);執(zhí)行sql查詢。
5.$data
=
mysql_fetch_assoc($datas)得到查詢到的緩存在內(nèi)存中的一條數(shù)據(jù)。
6.print_r($data);
相同點:三個函數(shù)都是返回數(shù)據(jù)庫中查詢到的一行數(shù)據(jù)(說的再清楚點就是一條數(shù)據(jù))。
不同點:mysql_fetch_assoc()用的是數(shù)據(jù)庫中相應(yīng)的字段名作為的key值(也就是數(shù)組下標)
如:filed['id']=1;
mysql_fetch_row()用的是自動生成的數(shù)字(從0開始依次生成)作為的key值(也就是數(shù)組下標)
如:filed[0]=1;
mysql_fetch_array()用的是自動生成的數(shù)字(從0開始依次生成)作為的key值(也就是數(shù)組下標),而且它還同時生成數(shù)據(jù)庫中相應(yīng)的字段名作為的key值(也就是數(shù)組下標)
如:
filed[0]=1,filed['id']=1;也就是說,mysql_fetch_array()將mysql_fetch_assoc()和mysql_fetch_row()查詢到的結(jié)果合為了一體了。
mysql_fetch_object()與mysql_fetch_assoc()差不多。只是mysql_fetch_assoc()返回的是數(shù)組。mysql_fetch_object()返回的是object對象。
mysql_insert_id() 取得上一步
INSERT
操作產(chǎn)生的
ID。
mysql_result()
函數(shù)返回結(jié)果集中一個字段的值。
mysql_num_fields()
函數(shù)返回結(jié)果集中字段的數(shù)目。
mysql_affected_rows();返回前一次
MySQL
操作所影響的記錄行數(shù)。
mysql_num_rows(mysql_query($sql))獲得結(jié)果集中行的數(shù)目。
mysql_pconnect()
函數(shù)打開一個到
MySQL
服務(wù)器的持久連接。
mysql_pconnect()
和
mysql_connect()
非常相似,但有兩個主要區(qū)別:
1.
當(dāng)連接的時候本函數(shù)將先嘗試尋找一個在同一個主機上用同樣的用戶名和密碼已經(jīng)打開的(持久)連接,如果找到,則返回此連接標識而不打開新連接。
2.
其次,當(dāng)腳本執(zhí)行完畢后到
SQL
服務(wù)器的連接不會被關(guān)閉,此連接將保持打開以備以后使用(mysql_close()
不會關(guān)閉由
mysql_pconnect()
建立的連接)。
mysql_data_seek(mysql_query($sql),8);獲得結(jié)果集中的第8條數(shù)據(jù)。(mysql_num_rows(mysql_query($sql))和mysql_data_seek(mysql_query($sql),8)在mysql_unbuffered_query($sql)不可以使用。)
mysql_unbuffered_query($sql)和mysql_query($sql)效果差不多,但是
mysql_unbuffered_query($sql)不緩存。mysql_query($sql)會緩存查詢的結(jié)果。
mysql_close();關(guān)閉mysql的最近的鏈接。
mysql_field_flags(mysql_query($sql),6)返回第六個字段的表屬性輸出如:not_null
primary_key
auto_increment
。
mysql_fetch_lengths(mysql_query($sql))返回該條數(shù)據(jù)的所有字段的每個字段的長度。返回的是一個數(shù)字組成的數(shù)組。
mysql_field_name(mysql_query($sql),3)返回第三個字段的字段名。
mysql_field_table(mysql_query($sql),0)返回指定字段所在的表名。
mysql_free_result(mysql_query($sql))
函數(shù)釋放結(jié)果內(nèi)存。
mysql_get_client_info()
函數(shù)返回
MySQL
客戶端信息。
mysql_get_host_info()
取得
MySQL
主機信息。
在使用php session進行數(shù)據(jù)查詢時主要有3中方法。第一種是使用函數(shù)【mysql_connect()】建立和MYSQL數(shù)據(jù)庫的連接。mysql_connect()是用來建立和MYSQL數(shù)據(jù)庫的連接,一共有5個參數(shù),一般情況下只使用前3個參數(shù),分別是MySQL服務(wù)器地址、用戶名以及密碼。第二種是使用函數(shù)【mysql_select_db()】指定要操作的數(shù)據(jù)庫。mysql_select_db()是用來指定要操作的數(shù)據(jù)庫。要是需要操作的數(shù)據(jù)庫還沒有創(chuàng)建,則需要創(chuàng)建數(shù)據(jù)庫,然后再創(chuàng)建數(shù)據(jù)庫中的表。第三種是使用函數(shù)【mysql_query()】查詢指令。mysql_query()是查詢指令的專用函數(shù),所有的SQL語句都通過它執(zhí)行,并返回結(jié)果集。一般情況下這三種方法是最適用的,希望可以解決你的問題。
008. 數(shù)據(jù)庫的數(shù)據(jù)查詢
本節(jié)課我們來了解一下數(shù)據(jù)庫的數(shù)據(jù)查詢方式,單數(shù)據(jù)、數(shù)據(jù)集和其它查詢。
一.單數(shù)據(jù)查詢
1. Db::table()中table必須指定完整數(shù)據(jù)表(包括前綴);
2. 如果希望只查詢一條數(shù)據(jù),可以使用find()方法,需指定where條件;
Db::table('tp_user')-where('id', 27)-find()
3. Db::getLastSql()方法,可以得到最近一條SQL查詢的原生語句;
SELECT * FROM `tp_user` LIMIT 1
4. 沒有查詢到任何值,則返回null;
5. 使用findOrFail()方法同樣可以查詢一條數(shù)據(jù),在沒有數(shù)據(jù)時拋出一個異常;
Db::table('tp_user')-where('id', 1)-findOrFail()
6. 使用findOrEmpty()方法也可以查詢一條數(shù)據(jù),但在沒有數(shù)據(jù)時返回一個空數(shù)組;
7. Db::table('tp_user')-where('id', 1)-findOrEmpty();
二.數(shù)據(jù)集查詢
1. 想要獲取多列數(shù)據(jù),可以使用select()方法;
Db::table('tp_user')-select(); SELECT * FROM `tp_user`
2. 多列數(shù)據(jù)在查詢不到任何數(shù)據(jù)時返回空數(shù)組,使用selectOrFail()拋出異常; Db::table('tp_user')-where('id', 1)-selectOrFail();
3. 在select()方法后再使用toArray()方法,可以將數(shù)據(jù)集對象轉(zhuǎn)化為數(shù)組;
4. 當(dāng)在數(shù)據(jù)庫配置文件中設(shè)置了前綴,那么我們可以使用name()方法忽略前綴; Db::name('user')-select();
三.其它查詢
1. 通過value()方法,可以查詢指定字段的值(單個),沒有數(shù)據(jù)返回null;
Db::name('user')-where('id', 27)-value('username');
$user = Db::table('tp_user')-select()-toArray(); dump($user);
2. 通過colunm()方法,可以查詢指定列的值(多個),沒有數(shù)據(jù)返回空數(shù)組; Db::name('user')-column('username');
3. 可以指定id作為列值的索引;
4. 如果處理的數(shù)據(jù)量巨大,成百上千那種,一次性讀取有可能會導(dǎo)致內(nèi)存開銷過大;
5. 為了避免內(nèi)存處理太多數(shù)據(jù)出錯,可以使用chunk()方法分批處理數(shù)據(jù);
6. 比如,每次只處理100條,處理完畢后,再讀取100條繼續(xù)處理;
7. 可以利用游標查詢功能,可以大幅度減少海量數(shù)據(jù)的內(nèi)存開銷,它利用了PHP生成器特性。每次查詢只讀一行,然后再讀取時,自動定位到下一行繼續(xù)讀取;
Db::name('user')-column('username', 'id');
Db::table('tp_user')-chunk(3, function($users) { foreach ($users as $user) {
dump($user);
}
echo 1; });
$cursor = Db::table('tp_user')-cursor(); foreach($cursor as $user){
dump($user);
}