008. 數(shù)據(jù)庫的數(shù)據(jù)查詢
創(chuàng)新互聯(lián)專注于宜昌網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供宜昌營銷型網(wǎng)站建設,宜昌網(wǎng)站制作、宜昌網(wǎng)頁設計、宜昌網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務,打造宜昌網(wǎng)絡公司原創(chuàng)品牌,更為您提供宜昌網(wǎng)站排名全網(wǎng)營銷落地服務。
本節(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. 當在數(shù)據(jù)庫配置文件中設置了前綴,那么我們可以使用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ù)量巨大,成百上千那種,一次性讀取有可能會導致內(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);
}
?php
$Conn?=?mysql_connect('localhost',?'root',?123456789)?or?die(mysql_error);
msql_query('SET?NAMES?UTF8');//數(shù)據(jù)庫編碼
mysql_select_db('數(shù)據(jù)庫名稱');
$Resl??=?mysql('select?id,?mm?from?表名稱?where?name?=?\'admin\'?')?or?die(mysql_error());
while?(?$rs?=?mysql_fetch_array(?$Resl?)?)?{
echo?'id是:',?$rs['id'],?'?mm是:',?$rs['mm'],?'br?/';
}
你好,不知道我這樣寫能不能幫你解決問題,如下:
//在查詢的時候添加條件,GiftType的值可以通過點擊的時候傳過來
$sql?=?"SELECT?*?FROM?`cards`?where?GiftType=1?ORDER?BY?RAND()?LIMIT?1";
$Con?=?new?msyqli('localhost',?'root',?'密碼',?'數(shù)據(jù)庫名稱');
$Rult?=?$Con?-?query("select?ip?from?表名稱?where?ip?=?'ip地址'");
if?(?$Rult?-?num_rows?)?{
//查詢到了
}?else?{
//沒有查詢到
}
我這里是習慣了用mysqli, 前提是php.ini配置中, 開啟了mysqli的支持
你也可以改成mysql函數(shù), 大同小異!